在 Word 2007 中指示长代码行的换行

在 Word 2007 中指示长代码行的换行

我正在使用 Word 2007 并将代码插入文档。我有一个固定宽度字体和浅灰色背景的样式,并且我使用 Notepad++ 进行语法突出显示。

我的问题是代码行太长而无法显示。它们会自动换行,但这样就无法清楚地看到这些行到底应该在哪里,即换行符实际上在哪里。

有没有办法在这些换行的开头自动插入一个箭头符号来表明它是同一行(有点像连字符,只不过是在长行而不是长单词上)?

例如这个:

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

(假设页面/框/列/...的宽度刚好足以显示最多“123”的文本),将显示如下:

公共静态 void foo(String abcdefg,布尔值 123,
→String xyz)

答案1

我不认为这是 Microsoft Word 的一个功能,但是我想您可以通过设置负悬挂缩进来模拟此功能,然后为每个段落设置一个背景图片,使得前 12pts 的空间为空白,然后接下来的 120pts 是一个 12pt 高箭头,平铺 10 次。这将允许您换行超过 11 行。

答案2

也许这不是您想要的答案,但您可以编写一些后处理 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. 将“代码”样式应用于所有源代码段落(无论如何,最好不要使用手动格式化)。确保您的代码样式字体是固定宽度的字体,例如 Courier。

  2. 将代码复制粘贴到 Word 的 Visual Basic 编辑器中(输入ALT-F11, 点击插入 > 模块,并粘贴代码)

  3. 在 Word 文档中,计算代码一行中的最大字符数,然后将宏中的值更改为该值(当前为 68)

  4. 要执行宏,请返回 Word 文档,按ALT-F8, 选择修正代码行并按跑步

请注意,您只能应用此宏一次,它无法智能地检测已“修复”的段落。因此,您应该在准备文档的最后运行它。

此外,如果您使用的是较新版本的 Office(2003 等),您可能会因为安全问题而无法保存/执行文档/宏。请仔细阅读所有可能的 Word 对话框,以免丢失代码。

答案3

另一个可能的解决方案是向代码段落添加列表编号或项目符号(将其添加到代码样式中)。这将让您简单地知道该行是换行还是新行。

相关内容