\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
。我对这些软件包了解不够,无法判断这是否是加载这些软件包的“正确”顺序,因此也无法判断补丁的正确位置,但它确实按规定修复了文档。)