dblatex 生成的输出与 minted 不兼容

dblatex 生成的输出与 minted 不兼容

我有一个用 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 &lt;stdio.h&gt;</programlisting>
    </article>

TeX 文件可以通过命令生成dblatex -bxetex -p dblatex.xsl -t tex test.xml

然后可以包含 minted,并使用 XeLaTeX 处理错误。

答案1

有很多事情需要解决。[相关 GitHub 讨论]

fancyboxfancyvrb冲突。为了使一切正常,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

相关内容