3

Я использую Word 2007 и вставляю код в документ. У меня есть стиль с шрифтом фиксированной ширины и светло-серым фоном и все, и я использую Notepad++ для подсветки синтаксиса.

Моя проблема с строками кода, которые слишком длинные для отображения. Они автоматически переносятся, но тогда не очевидно, каким именно образом должны быть строки, то есть где на самом деле находится символ новой строки.

Есть ли способ автоматически вставить символ стрелки в начале таких обернутых строк, чтобы указать, что это одна и та же строка (вроде переноса слов, за исключением длинных строк вместо длинных слов)?

Так что, например это:

public static void foo(String abcdefg, Boolean 123, String xyz)

(при условии, что страница / поле / столбец / ... достаточно широка, чтобы показывать текст размером до "123"), будет отображаться так:

public static void foo(String abcdefg, Boolean 123,
→ Строка xyz)

3 ответа3

0

Другим возможным решением было бы добавить нумерацию списка или маркеры к абзацам кода (добавить его в стиль кода). Это даст вам простое указание на то, будет ли строка перенесена или является новой.

0

Я не верю, что это особенность в Microsoft Word, однако я полагаю, что вы могли бы подражать этому, имея отрицательный висячий отступ, а затем устанавливая фоновое изображение для каждого абзаца таким образом, чтобы первые 12-тизначный пробел оставался пустым, а затем следующий 120pts - это стрелка 12pt, выложенная плиткой 10 раз. Это позволит вам преодолеть 11 строк.

0

Возможно, не тот ответ, который вы искали, но вы могли бы написать некоторый код VBA для постобработки, который сканирует длинные строки и вставляет нужный символ.

Этот код может помочь вам начать работу (он готов к копированию и вставке):

Sub FixCodeLines()

Dim p           As Word.Paragraph
Dim c           As Word.Range
Dim charcount   As Integer
Dim MaxLineLen  As Integer
Dim txt         As String
Dim styname     As String

MaxLineLen = 68     ' number of characters on one line
txt = "    -->  "   ' symbol/text to insert
styname = "Code"    ' name of style to process

For Each p In ActiveDocument.Paragraphs
    If p.Style = styname Then
        charcount = 0
        For Each c In p.Range.Characters
            charcount = charcount + 1
            If (charcount Mod MaxLineLen = 0) Then
                c.InsertAfter Chr(11) & txt ' Chr(11) = soft enter
            End If
        Next
    End If
Next

End Sub

Код для всех абзацев в стиле кода будет вставлять Shift-Enter и текст по вашему выбору после каждой длинной строки (в зависимости от количества символов)

Как пользоваться:

  1. Примените стиль "Код" ко всем абзацам исходного кода (в любом случае, не рекомендуется использовать ручное форматирование). Убедитесь, что ваш шрифт стиля Code является шрифтом фиксированной ширины, например, Courier.

  2. Скопируйте и вставьте код в редактор Visual Basic Word (введите ALT-F11, нажмите « Вставка»> "Модуль" и вставьте код)

  3. В документе Word подсчитайте максимальное количество символов в одной строке кода кода и измените значение в макросе на это значение (в настоящее время 68).

  4. Чтобы выполнить макрос, вернитесь в документ Word, нажмите ALT-F8, выберите FixCodeLines и нажмите « Выполнить».

Обратите внимание, что вы можете применить этот макрос только один раз, нет интеллекта, чтобы обнаружить абзацы, которые уже были «исправлены». Таким образом, вы должны запустить его в самом конце подготовки вашего документа.

Кроме того, если у вас более свежая версия Office (2003 и т.д.), У вас могут возникнуть проблемы с сохранением / выполнением документа / макроса из-за проблем с безопасностью. Внимательно прочитайте все возможные диалоговые окна Word, чтобы не потерять свой код.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .