我有一个用 dblatex 生成的大型 LaTeX 文件。当我用 minted 替换 lstlisting 环境时,它无法处理它。XeLaTeX 产生以下错误:
! Missing \endcsname inserted.
<to be read again>
\global
l.2 ...de \PYGdefaultZlt{}stdio.h\PYGdefaultZgt{}}
有人尝试过将 dblatex 与 minted 结合使用吗?https://github.com/sciactive/2be-extras/blob/master/documentation/doc-pdf.shgit 存储库已将 dblatex 与 minted 集成,但即使这样也不起作用。
示例 xml 可以是
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
<title>Test article</title>
<para>
<application xl:href="http://www.gnu.org/software/emacs/">Emacs</application>
is my favourite text editor.</para>
...
<programlisting language="c">#include <stdio.h></programlisting>
</article>
TeX 文件可以通过命令生成dblatex -bxetex -p dblatex.xsl -t tex test.xml
。
然后可以包含 minted,并使用 XeLaTeX 处理错误。
答案1
有很多事情需要解决。[相关 GitHub 讨论]
fancybox
和fancyvrb
冲突。为了使一切正常,fancyvrb
必须最后加载。这两个包都由包加载db2latex
,因此输出文件中不需要它们.tex
。
该包db2latex
尝试以正确的顺序加载这两个包,但忽略了它已经fancyvrb
在子包中加载的事实dbk_verbatim
,子包会加载listings
子包fancyvrb
。即使不是这样,dbk_misc
也会fancyvrb
明确加载。所以db2latex
最终最后加载fancybox
,这是错误的。您需要注释掉 in \usepackage{fancybox}
,db2latex.sty
或将其移到 之前\usepackage{dbk_verbatim}
。
如果fancybox
在任何地方加载db2latex
,则minted
必须加载后 db2latex
,因为minted
将加载fancyvrb
,因此fancyvrb
不会最后加载。如果fancybox
从未加载过,则minted
可以在任何地方加载。
完成此操作后,仍然存在问题,因为dbk_misc.sty
使用\lstset{fancyvrb=true}
,它会fancyvrb
用版本覆盖内部内容listings
。您需要将其注释掉,或者\lstset{fancyvrb=false}
在输出文档中的某个位置后加载中db2latex
。