1

Тема: Знак корня в русском языке

понадобилось набрать много слов для школы по русскому языку
там упражнения на обнаружение приставки ,корня, суффикса и тп.
подскажите с помощью чего можно набрать такие слова, чтобы с обозначениями сверху это было.
через таблицу символов не получается это сделать.
с помощью формул тоже. например в формулах есть знак похожий на корень (и врде в таблице символов) но это только для одного символа - несколько уже не впишешь.
гугл и яндекс результатов не дают.

2

Re: Знак корня в русском языке

хотя бы рисунком посмотреть, что надо получить

3

Re: Знак корня в русском языке

рисунок

4

Re: Знак корня в русском языке

я подобные вещи через таблицу

Post's attachments

koren18.png
koren18.png 12.95 Кб, файл не был скачан. 

You don't have the permssions to download the attachments of this post.

5

Re: Знак корня в русском языке

вообще конечно вариант но он очень неудобен при оформлении большого набора текста

6

Re: Знак корня в русском языке

Лучше конечно использовать формулы. Слышал, есть расширенный вариант надстройки Equation.

Но можно сделать на колене. Прилагаю примерчик с инструкцией. Довольно просто менять, удалять, вставлять.

Post's attachments

root.doc 31.5 Кб, 7 скачиваний с 2013-04-18 

You don't have the permssions to download the attachments of this post.
Макросы под заказ и готовый пакет - mtdmacro.ru

7

Re: Знак корня в русском языке

Предложу макрос:

Option Explicit

Enum LexicalUnits
    luRoot = 0
    luPrefix = 1
    luPostfix = 2
    luEndfix = 3
End Enum

'Вставить корень
Sub AddRoot()
    Call AddLexicalUnit(luRoot)
End Sub

'Вставить приставку
Sub AddPrefix()
    Call AddLexicalUnit(luPrefix)
End Sub

'Вставить суффикс
Sub AddPostfix()
    Call AddLexicalUnit(luPostfix)
End Sub

'Вставить окончание
Sub AddEndfix()
    Call AddLexicalUnit(luEndfix)
End Sub

Sub AddLexicalUnit(LexUnit As LexicalUnits)
    Dim nL As Single, nT As Single, nW As Single, nH As Long
    Const HEIGHT As Single = 3
'    ActiveWindow.GetPoint 0, 0, 0, nH, Selection.Range
    nL = Selection.Information(wdHorizontalPositionRelativeToPage)
    nT = Selection.Information(wdVerticalPositionRelativeToPage) + 2
    Selection.Collapse wdCollapseEnd
    nW = Selection.Information(wdHorizontalPositionRelativeToPage) - nL
    Select Case LexUnit
        Case luRoot 'Корень
            With ActiveDocument.Shapes.BuildFreeform(msoEditingAuto, CSng(nL), CSng(nT))
                .AddNodes msoSegmentCurve, msoEditingAuto, CSng(nL + nW / 2 - 1), CSng(nT - HEIGHT)
                .AddNodes msoSegmentCurve, msoEditingAuto, CSng(nL + nW - 2), CSng(nT)
                .ConvertToShape.Select
            End With
        Case luPrefix 'Приставка
            With ActiveDocument.Shapes.BuildFreeform(msoEditingAuto, CSng(nL), CSng(nT))
                .AddNodes msoSegmentLine, msoEditingAuto, CSng(nL + nW - 2), CSng(nT)
                .AddNodes msoSegmentLine, msoEditingAuto, CSng(nL + nW - 2), CSng(nT + 2 * HEIGHT / 3)
                .ConvertToShape.Select
            End With
        Case luPostfix 'Суффикс
            With ActiveDocument.Shapes.BuildFreeform(msoEditingAuto, CSng(nL), CSng(nT))
                .AddNodes msoSegmentLine, msoEditingAuto, CSng(nL + nW / 2 - 1), CSng(nT - HEIGHT)
                .AddNodes msoSegmentLine, msoEditingAuto, CSng(nL + nW - 2), CSng(nT)
                .ConvertToShape.Select
            End With
        Case luEndfix 'Окончание
            nH = Selection.Font.Size
            With ActiveDocument.Shapes.AddShape(msoShapeRectangle, nL, nT, nW, CSng(nH))
                .Fill.Visible = msoFalse
                .Select
            End With
    End Select
    Selection.ShapeRange.WrapFormat.Type = 3
End Sub

Четыре процедуры: для приставки, корня, суффикса и окончания. Нужно выделить текст и выбрать нужную процедуру. С окончанием пока проблема: не могу точно вычислить высоту прямоугольника выделения

Лучше день потерять — потом за пять минут долететь!

8

Re: Знак корня в русском языке

viter.alex
чудесный код!!
только вот вертикальную черту в Приставке надо бы подлинее сделать, не смог разобраться какая цифра (-ы) за это в ответе

9

Re: Знак корня в русском языке

Вождь ваш способ тож может жить, только вот я не понял что вы волшебного сделали, что при изменении любой фигуры - другие под нее подстраиваются. Причем они ж не сгруппированы..

10

Re: Знак корня в русском языке

viter.alex пишет:

...точно вычислить высоту прямоугольника выделения...

В ворд это проблематично. И нужна высота не прямоугольника, а выделенного текста. Selection же - это прямоугольник от предыдущей строки до текущей, т.е. это высота самого большого, что есть в строке. Думаю, можно взять максимальный размер шрифта в слове за высоту, приблизительно но сойдет.

Для прямоугольника можно использовать функцию GetPoint, но она возвращает результат в Screen Pixels, которые надо еще перевести в Points. Кстати, кто знает как? Надо кажется учитывать масштаб окна, разрешение экрана...

aka_smile пишет:

...при изменении любой фигуры - другие под нее подстраиваются...

Это обычные автофигуры в тексте, потому и подстраиваются. Плюс этого  метода, что все привязано к слову, вместе с ним легко перемещается или удаляется, не нарушая целостности текста. Все это тоже можно запихнуть в макрос с подгонкой размеров.

Макросы под заказ и готовый пакет - mtdmacro.ru

11

Re: Знак корня в русском языке

aka_smile пишет:

viter.alex
чудесный код!!
только вот вертикальную черту в Приставке надо бы подлинее сделать, не смог разобраться какая цифра (-ы) за это в ответе

За это в ответе вот эта цифра:

CSng(nT + 2 * HEIGHT / 3)

HEIGHT — это константа, которая задаёт высоту знаков. В данном случае, для вертикальной черты я решил взять 2/3 от этой константы.

Лучше день потерять — потом за пять минут долететь!

12

Re: Знак корня в русском языке

viter.alex
кстати, в качестве окончания, думаю, можно использовать обрамление внешними границами выделенного текста.

13

Re: Знак корня в русском языке

Вождь
в примере root.doc вы написали пояснение..."с помощью полей и автофигур".
я вот не понял, каким образом поля влияют на мой вопрос?
и я правильно понимаю, вы говорите о страничных отступах (от края листа до текста)?

14

Re: Знак корня в русском языке

aka_smile пишет:

...с помощью полей и автофигур...

Перевод с русского на VBA: "с помощью Field и InLineShape"

Макросы под заказ и готовый пакет - mtdmacro.ru

15

Re: Знак корня в русском языке

Вождь пишет:
aka_smile пишет:

...с помощью полей и автофигур...

Перевод с русского на VBA: "с помощью Field и InLineShape"

жаль что я не понимаю значения ответа, точнее частично
я vba очень слабо понимаю...