我正在开发(重写)一对相关的Word加载项。加载项的目的是生成手稿的概念索引。第一阶段的加载项是在word-js中实现的,它允许用户在文档中插入索引条目。然后,它将这些条目聚合到一个索引中,然后将其放入文档末尾的新节中,并使用占位符表示条目的实际页码。这是因为word-js API在文档页码中没有任何钩子。
第二阶段加载项解析这些占位符,将其替换为实际的页码。此阶段在VSTO(C#)中实现。这是代码解析页码的样子:
df <- structure(list(lon = c(-124.1637, -122.4199), lat = c(40.80207,
37.77903)), class = "data.frame", row.names = c(NA, -2L))
> df
lon lat
1 -124.1637 40.80207
2 -122.4199 37.77903
这对于文档的主要内容中的索引条目工作正常。但是,我们还需要解析在脚注和尾注中创建的条目的页码。脚注不是问题,因为(几乎)脚注始终与锚点在同一页面上。但是尾注是个问题。我可以在脚注或尾注集合定义的范围内运行相同的代码。但是 private int[] FindAndReturnPage(Range range, string[] index_id)
{
// index_id consists of two strings, the index number (1-3) and the entry id
int pageNumStart = -1; // if nothing is found we return -1
int pageNumEnd = -1;
Find finderStart = range.Find;
finderStart.ClearFormatting(); // removes formatting to make the find work better
finderStart.Text = "XE Startindex_" + index_id[0] + "_id_" + index_id[1]; // eg: XE Startindex_1_000014
finderStart.Execute();
if (finderStart.Found)
{
range.Select();
pageNumStart = Globals.ThisAddIn.Application.Selection.Range.get_Information(WdInformation.wdActiveEndPageNumber);
// in case the index entry spans more than one page, there might be an Endindex too
Find finderEnd = range.Find;
finderEnd.ClearFormatting();
finderEnd.Text = "XE Endindex_" + index_id[0] + "_id_" + index_id[1]; // eg: XE Endindex_1_000014
finderEnd.Execute();
if (finderEnd.Found)
{
range.Select();
pageNumEnd = Globals.ThisAddIn.Application.Selection.Range.get_Information(WdInformation.wdActiveEndPageNumber);
}
}
int[] both = { pageNumStart, pageNumEnd };
return both;
}
返回锚点的页码,而不是尾注本身出现的页码(以后可能有数百页)。
有什么方法可以确定尾注实际在哪个页面上,而不是锚点而是尾注本身?
谢谢。