![Microsoft Word 中这个无法复制的神秘段落标记是什么?](https://linux22.com/image/1499981/Microsoft%20Word%20%E4%B8%AD%E8%BF%99%E4%B8%AA%E6%97%A0%E6%B3%95%E5%A4%8D%E5%88%B6%E7%9A%84%E7%A5%9E%E7%A7%98%E6%AE%B5%E8%90%BD%E6%A0%87%E8%AE%B0%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
在 Windows 7 上的 Microsoft Word 2013 中,我不断遇到无法正确复制粘贴的奇怪段落标记,这会导致各种问题。不幸的是,我不知道如何生成这个神秘的段落标记,但这里有一个包含它的文件:无法复制的神秘段落标记.docx.zip(为了提高准确性,再次压缩 DOCX 文件)。
当我让 Microsoft Word 显示所有非打印字符时,神秘的段落标记会显示为正常的段落标记 (¶) - 与常规段落标记完全相同。但是,它的行为很奇怪:
- 当我选择整个文本并将其复制粘贴到记事本等中时,它会被一个普通的空格字符取代。
- 神秘的段落标记可能出现在 DOCX 或 DOC 文件中。当我将文件保存为 RTF 并使用 MS Word 重新打开它时,我得到的是一个空格字符。当我将文件保存为 TXT 时,它会转换为正常的换行符。
- 当我使用 MS Word 的替换对话框将所有段落标记(“^p”)替换为其他内容时,神秘的段落标记不会被替换。这样,它们就类似于任何 MS Word 文件末尾的强制性段落标记。
当我使用其他应用程序打开该文件时,大多数应用程序都会将神秘的段落标记转换为毫无意义的内容;例如,Apple 的 TextEdit.app 或旧的 Microsoft Office Word Viewer:
但有些会将其转换为普通换行符;例如 LibreOffice:
这个神秘的段落标记是什么?我该如何避免它?
答案1
查看您的示例 .docx,“神秘段落标记”由一个<w:cr/>
元素表示,该元素在 ISO OOXML 标准(例如 ISO29500-2012 第 1 部分)的第 17.3.3.4 节中描述为 cr(回车符)。
其中的摘要描述是“运行内容中的回车符的行为应与具有空类型和清除属性的断行符相同,它将结束当前行并找到下一个可用的继续行。”
换句话说,它应该表现就像硬换行符(事实上,在这样的标记之后,您不会得到正常的段落间距),但 Word 显然以与段落标记相同的方式显示它。通常,段落标记会显示在(段落)元素的末尾,也可能显示在其他一些情况下。
一个问题是如何将 添加<w:cr/>
到文档中。我认为有几种方法,但肯定可以做到的一种方法是使用“查找/替换”将字符替换为“ ^13
”(不选中通配符选项)。
删除它们并不简单,因为如果您尝试用其他符号替换 ^13,Word 会替换所有段落标记。如果您将神秘的段落标记复制/粘贴到“查找内容”框中,Word 会替换所有空格。即使在 VBA 中,它们似乎也显示为“13”个字符,与普通段落标记字符不易区分。
但是,作为解决方案的粗略尝试,以下 VBA 似乎可以在最新版本的 Windows Word 中运行:
Sub replaceCRinDocBody
' Replaces paragraph marks that correspond to <w:cr/> Elements
' by a normal paragraph mark
' This only processes the document body, not headers/footers.
Dim l as Long
With ActiveDocument.Content.Characters
For l = 1 to .Count
If AscW(.Item(l)) = 13 Then
If Instr(1,.Item.WordOpenXML,"<w:cr/>") > 0 Then
.Item(l).Text = vbCr
End If
End If
Next
End With
End Sub
答案2
我相信我的直觉是正确的,您看到的问题字符似乎是 *nix 样式的换行符(ASCII 代码:0D)或 Apple 版本(ASCII 代码:0A),而 Windows 通常使用组合换行符编码(ASCII 代码:0D 0A)。我可以通过创建文本文件并手动编辑文件的十六进制值来重现该问题,以获得 *nix 换行符。在 Word 中打开文本文件会按预期显示换行符,而尝试将它们复制到 Notepad(++) 中会将它们显示为空格。我甚至将它们复制到您发布的文件中并保存,关闭 Word,重新打开它并尝试复制和粘贴文本,结果相同。其他可移植的程序(LibreOffice、OpenOffice,可能还有其他程序)能够使用不同类型的换行符,这很可能就是它们不受此问题影响的原因。
为了摆脱它们,您可能必须使用 OpenOffice 或 LibreOffice 并使用正则表达式来找到它们;但是它们不会被保存为十六进制值 0D,所以我不确定您应该使用什么值来查找字符。
答案3
特殊字符标记是 Word 中的段落缩进标记。要删除它,您需要将 Word 版本设置为不显示格式。操作方法如下:
1) 单击 Microsoft Office 按钮 Office 按钮图像 ,然后单击 Word 选项。
2) 单击显示。
3) 在始终在屏幕上显示这些格式标记下,清除您不想在文档中始终显示的任何格式标记的复选框。
如果需要,可获取更多 MSDN 链接
https://support.office.com/en-us/article/Show-or-hide-formatting-marks-c0460106-19d3-4441-986c-b655bffe6be4