1

我正在使用 Novacode DocX 创建一个 Word 文档,我想在其中插入一段文本,然后稍后在文档中以“(参见第 X 页)”的形式插入对它的引用,其中 X 由 Word 动态生成.

在 Word 本身中,我可以通过为第一段文本创建书签并在我想要页码的位置插入交叉引用来轻松地做到这一点。

我想我知道如何使用 DocX 添加书签,但如何创建交叉引用?这在 DocX 中是否可行?

非常感谢您的帮助,克里斯

4

1 回答 1

2

经过一番摆弄,我终于找到了一种方法来实现这一点:

internal void AddCrossReference(DocX doc, Paragraph p, string destination)
        {
            XNamespace ns= doc.Xml.Name.NamespaceName;
            XNamespace xmlSpace = doc.Xml.GetNamespaceOfPrefix("xml");
            p = p.Append(" (see pp");
            p.Xml.Add(new XElement(ns + "r", new XElement(ns + "fldChar", new XAttribute(ns + "fldCharType", "begin"))));
            p.Xml.Add(new XElement(ns + "r", new XElement(ns + "instrText", new XAttribute(xmlSpace + "space", "preserve"), String.Format(" PAGEREF {0} \\h ", destination))));
            p.Xml.Add(new XElement(ns + "r", new XElement(ns + "fldChar", new XAttribute(ns + "fldCharType", "separate"))));
            p.Xml.Add(new XElement(ns + "r", new XElement(ns + "rPr", new XElement(ns + "noProof")), new XElement(ns + "t", "1")));
            p.Xml.Add(new XElement(ns + "r", new XElement(ns + "fldChar", new XAttribute(ns + "fldCharType", "end"))));
            p = p.Append(")");
        }

destination是您要交叉引用的书签的名称。

任何建议的改进都将受到欢迎。

于 2017-09-18T07:34:50.523 回答