为什么我无法编译只有 6 行的最简单的 TeX 文件?

为什么我无法编译只有 6 行的最简单的 TeX 文件?
\documentclass{article}
\usepackage[adobefonts]{ctex}
\usepackage[os=win]{menukeys}
\usepackage{listings}    
\begin{document}
\end{document}

上面最简单的 TeX 文件无法用 进行编译xelatex,错误如下:

(/opt/local/texlive/2014/texmf-dist/tex/latex/adjustbox/adjustbox.sty
(/opt/local/texlive/2014/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/opt/local/texlive/2014/texmf-dist/tex/generic/xkeyval/xkeyval.tex))
(/opt/local/texlive/2014/texmf-dist/tex/latex/adjustbox/adjcalc.sty)
(/opt/local/texlive/2014/texmf-dist/tex/latex/adjustbox/trimclip.sty
(/opt/local/texlive/2014/texmf-dist/tex/latex/collectbox/collectbox.sty)
(/opt/local/texlive/2014/texmf-dist/tex/latex/adjustbox/tc-xetex.def))
(/opt/local/texlive/2014/texmf-dist/tex/latex/ifoddpage/ifoddpage.sty)
(/opt/local/texlive/2014/texmf-dist/tex/latex/varwidth/varwidth.sty))
(/opt/local/texlive/2014/texmf-dist/tex/latex/relsize/relsize.sty)
(/opt/local/texlive/2014/texmf-dist/tex/latex/catoptions/catoptions.sty)
(/opt/local/texlive/2014/texmf-dist/tex/latex/oberdiek/kvoptions.sty
(/opt/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)
(/opt/local/texlive/2014/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
(/opt/local/texlive/2014/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/opt/local/texlive/2014/texmf-dist/tex/generic/oberdiek/etexcmds.sty
(/opt/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifluatex.sty)))))
(/opt/local/texlive/2014/texmf-dist/tex/latex/listings/listings.sty
(/opt/local/texlive/2014/texmf-dist/tex/latex/listings/lstmisc.sty)
(/opt/local/texlive/2014/texmf-dist/tex/latex/listings/listings.cfg))
(/opt/local/texlive/2014/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty

! LaTeX Error: Option clash for package xeCJK.

See the LaTeX manual or LaTeX Companion for explanation. Type  H
<return>  for immediate help.  ...                                    

l.44 \RequirePackage
                     { listings }
?

根本原因是什么?


怪异现象: 以下三个版本都可以。

好版本 1:

\documentclass{article}
% \usepackage[adobefonts]{ctex}
\usepackage[os=win]{menukeys}
\usepackage{listings}    
\begin{document}
\end{document}

好版本 2:

\documentclass{article}
\usepackage[adobefonts]{ctex}
% \usepackage[os=win]{menukeys}
\usepackage{listings}    
\begin{document}
\end{document}

好版本 3:

\documentclass{article}
\usepackage[adobefonts]{ctex}
\usepackage[os=win]{menukeys}
% \usepackage{listings}    
\begin{document}
\end{document}

答案1

此软件包组合尝试加载xeCJK软件包两次:一次在ctex-xecjk-engine.def软件包的第 11 行ctex,然后再次在xeCJK-listings.sty软件包的第 43 行listings。您遇到的冲突是每次使用的选项都不同(第一次指定,[BoldFont,normalindentfirst]而第二次不提供任何选项)。

您可以通过编辑第 43 行xeCJK-listings.sty(位于texmf目录中tex/xelatex/xecjk)来修补此问题,使其变为:

\@ifpackageloaded{xeCJK}{}{\RequirePackage { xeCJK }}

xeCJK如果已经加载,则不会尝试重新加载。

这允许编译最小示例,并包含一个简单的列表。不过,我应该注意,我还没有检查 中的任何内容是否与的选项listings特别不兼容。我无法想象有,但仍然需要注意 TeXor 和所有这些。[BoldFont,normalindentfirst]xeCJK

编辑后注明:此补丁特定于listings在之后第二个加载ctex。我对这些软件包了解不够,无法判断这是否是加载这些软件包的“正确”顺序,因此也无法判断补丁的正确位置,但它确实按规定修复了文档。)

相关内容