![将内联引用从 MS Word 转换为 BibLaTeX](https://linux22.com/image/452541/%E5%B0%86%E5%86%85%E8%81%94%E5%BC%95%E7%94%A8%E4%BB%8E%20MS%20Word%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20BibLaTeX.png)
这个答案解释,指的是本文,如何将书目从 MS Word 导出到.bib
。脚本已略有改进这里。但是,此脚本对于将实际的内联引用转换为 LaTeX 引用没有多大作用。例如,让我们将其应用于以下示例文档:
我得到:
其实这还不算太糟。引用已被括号中的标签名称替换。让我们稍微更新一下脚本,具体来说,修改第 773-837 行的脚本,使每个引用输出看起来都像这样:
<xsl:template match="b:Citation/b:Source[b:SourceType = 'Book']">
<html xmlns="http://www.w3.org/TR/REC-html40">
<body>
<!-- Defines the output format as (Author, Year)-->
<xsl:text>@@@parencite{</xsl:text>
<xsl:value-of select="b:Tag"/>
<xsl:text>}</xsl:text>
</body>
</html>
</xsl:template>
然后我得到下面的结果:
现在,使用例如pandoc
或writer2latex
将其转换为 LaTeX 代码后,我要做的就是@@@
用字符串替换\
,然后我就会得到一个可以运行的 BibLaTeX 文档。
唯一的问题是第二次引用的页码(“p. 223”)不见了。@@@parencite[223]{Johnson22}
在这种情况下,我该如何输出它?
我尝试查看其他引用样式的 8000 行以上源代码,但不幸的是它们非常复杂。我设法在某处找到了这行代码<xsl:value-of select="$pages"/>
,因此我尝试了以下方法:
<xsl:template match="b:Citation/b:Source[b:SourceType = 'Book']">
<html xmlns="http://www.w3.org/TR/REC-html40">
<body>
<!-- Defines the output format as (Author, Year)-->
<xsl:text>@@@parencite[</xsl:text>
<xsl:value-of select="$pages"/>
<xsl:text>]{</xsl:text>
<xsl:value-of select="b:Tag"/>
<xsl:text>}</xsl:text>
</body>
</html>
</xsl:template>
但是 MS Word 不再识别该样式,这(根据我的简要经验)意味着该脚本不再有效。
我怎样才能让它工作?