通过执行以下操作:
- 右键单击普通的段落样式,
- 调整...
- [格式],编号...
- [定义新的数字格式...]
- 数字样式:1,2,3...;数字格式:1;对齐方式:右
和
- 右键单击普通的段落样式,
- 调整...
- [格式],段落...
- 左侧缩进:-0.25 英寸;特殊:悬挂;加长:0.25 英寸
我设法创建了一种连续编号段落的样式,如下所示:
但我想要的是段落编号始终出现在外部边缘,即数字 12 至 14 应该出现在右边缘,而不是像上一页那样出现在左边缘。
像图像、表格等,我必须能够引用任何段落编号(“按段落117ff。”),通过上述方法可以实现。
目的:打印报告包含数千个段落,需要进行详细讨论,如果能够引用段落编号,将大大方便阅读。而奇数页左侧的编号(可能部分模糊)实在太丑了。
这样的编号样式可能吗?
(使用 MS Word 2019 Professional:也许我们应该为其添加一个标签?)
答案1
我在 Stack Overflow 上看到了您的问题,它的表述确实“太宽泛”,但它引起了我的兴趣。
尽管不能完全自动地、手动地或使用 VBA 也可以完成。
- 选择任意(空)段落并应用
Frame
。您可以在功能区选项卡、控件组、旧版控件中找到该Insert Frame
命令Developer
。它是左侧第四个控件
- 调整框架大小、应用所需的数字字体大小等等。
- 右键单击框架以进入“设置框架格式”对话框。对于水平位置,选择
Outside
相对于页面,并根据需要微调与文本的距离。垂直位置相对于段落应为 0。确保“随文本移动”和“锁定锚点”已激活。确认对话框后,框架段落应移动到紧接着的段落的外边距。 - 创建一个新风格从本段开始 - 它将包括框架定义。
- 通过输入或选择另一个空段落并将样式应用于该段落来测试样式。
可以通过在每个帧中放置一个 SEQ 字段,然后更新文档中的字段来生成编号。
此时,可以手动生成编号。当然,对于大型文档来说,这是一项漫长的任务。以下代码将循环全部文档中的段落,插入一个空段落、一个 SEQ 字段并使用样式对其进行格式化。最后,所有字段都会更新。
这几乎肯定会(根据您展示的屏幕截图)插入比您想要的更多的数字。您可以手动浏览并删除它们,或者修改代码以忽略符合特定条件的不应编号的段落,或者修改代码以在生成框架时跳过这些段落。
在此代码中,框架的样式被命名为NrPara
;如果您使用不同的名称,则需要进行更改。
Sub NumberParas()
Dim doc as Word.Document
Dim Para As Word.Paragraph
Dim rngPara As Word.Range, rngParas() As Word.Range
Dim numParas As Long, counterPara As Long
Dim numParaStyle As Word.style
Dim rngNumPara As Word.Range
Dim sSEQ As String
sSEQ = "SEQ ParaNum"
Set doc = ActiveDocument
numParas = doc.Paragraphs.Count
ReDim rngParas(numParas - 1)
'Get an array of the paragraph ranges
For counterPara = numParas To 1 Step -1
Set Para = doc.Paragraphs(counterPara)
Set rngPara = Para.Range
Set rngParas(counterPara - 1) = rngPara
Next
'Insert a paragraph above each existing one, format and insert SEQ field
For counterPara = LBound(rngParas) To UBound(rngParas)
Set rngPara = rngParas(counterPara)
With rngPara
.InsertBefore vbCr
.Collapse wdCollapseStart
.Fields.Add rngPara, wdFieldEmpty, sSEQ, False
rngPara.style = "NrPara"
End With
Next
doc.Fields.Update
End Sub
答案2
创造专属风格
此样式在外页边距上实现连续编号,与编号的段落顶部对齐。需要为这些边距编号创建独立的样式。
创建一些样式为 Normal 的段落。在这样的段落之前,输入一个空段落。将光标定位在新的空段落上。在“样式”窗口中,单击“新建样式”按钮。在“从格式创建新样式”窗口中,将新样式命名为 Marginal Number。样式类型为“段落”,“基于的样式”和“以下段落的样式”字段均设置为“普通”。字体颜色我使用中灰色,这样编号就不会过多地分散文本的注意力。文本流设置为居中。
在标有“格式”的下拉列表中选择“框架...”,然后在“框架”窗口中选择“文本环绕”。水平位置是相对于页面的“外部”。与文本的距离应为 1 厘米,以免过多地分散阅读文本的注意力。确保垂直位置相对于段落为 0(这是默认值)。还要确保输入最小高度(在“大小”组中),以防止在前一侧显示边距数字,而段落本身显示在新的一侧。我在这里使用至少 2 厘米(我使用公制测量单位)。确保选中“随文本移动”复选框。单击“确定”。
在“格式”中选择“编号...”,然后在“编号和项目符号”窗口中,单击标有“定义新数字格式...”的按钮。选择数字样式 1,2,3...,但请确保“数字格式”中只有数字 1,而不是结尾的点或其他任何内容。在“对齐”中再次选择“居中”。确认所有窗口。
在 View 中,选择 Print Layout 以查看编号效果。只需在已有包含文本的段落前输入一个段落,然后对其应用新样式:新的边距编号将添加到外边距,与以下段落顶部对齐。
还有一件事要做。将光标放在边际数字框中,就在数字后面。有一些空间需要删除。右键单击以获取上下文菜单,然后选择调整列表缩进...。在出现的窗口中,将数字位置和文本缩进都设置为 0,并将数字后的内容设置为无。单击确定后,Word 会警告这些更改将应用于边际数字样式,这正是我们想要的,因此单击是。您会注意到,包含边际数字的框架现在要窄得多,即我们为更大的数字获得了更多空间。
请注意,这些边际数字可以通过参考文献、标题、交叉引用来引用;它们显示为简单的数字。
为边际数字创建宏
添加边距数字的整个过程有些繁琐:将光标定位在段落开头,按 Enter 键获取新的空段落,将光标重新定位在新段落中,单击新样式以应用它。宏可以自动执行这些任务。
提供一些带有文本的段落,以便可以录制宏。将光标定位在尚未编号的段落的第一个字符之前。使用“视图”、“宏”、“录制宏...”开始新的宏录制,并在“录制宏”窗口中合理地命名宏(此处:InsertMarginalNumber),然后选择“键盘”。在“自定义键盘”窗口中,分配一个将用于执行宏的新组合键。我选择了 Ctrl+M,其中 M 代表边际数。(请注意,这将覆盖用于缩进段落的原始快捷键。如果您习惯使用该快捷键,建议使用其他快捷键。)单击按钮“分配”,然后单击“关闭”。
现在宏正在录制。按 Enter,然后按向左箭头键,应用样式 Marginal Number,然后按向右箭头键。通过“查看”、“宏”、“停止录制”停止录制宏。要验证宏,请将光标置于尚未编号的段落的开头,然后按 Ctrl+M。
这是录制的宏的代码:
Sub InsertMarginalNumber()
Selection.TypeParagraph
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Style = ActiveDocument.Styles("Marginal Number")
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub
要应用,请将光标移到段落的开头,然后按 Ctrl+M:外边距上就有您的边距数字。