在
使用 \RequirePackage 两次加载包会导致“选项冲突”
和
我们看到,一个包可以被加载多次,只要没有给出选项或者没有给出不同的选项。
然而,我的问题不是这是否真的有效,或者它是否以这种方式在 LaTeX 中实现(嗯,显然是的),而是这是否是一个记录行为。
这是我在关于它的文章中发现的内容clsguide
:
“如果某个包总是被加载
\RequirePackage...
或者
\usepackage
那么即使它的加载请求被多次请求,它也只会加载一次。”
虽然这清楚地表明多次加载包是可以的,但是作者catoptions
有不同的看法:
“你先是加载了xcolor
选项cmyk
,然后又没有任何选项。这导致了 LaTeX 无法捕捉的选项冲突。catoptions
会突出显示它。”(来源:catoptions 导致选项与 xcolor 发生冲突)
LaTeX2e 文档中还有其他关于此问题的提示吗?
显示问题的示例文档:
\documentclass{article}
\usepackage{catoptions}
\usepackage[labelfont=bf]{caption}
\usepackage{subcaption}
\begin{document}
Test
\end{document}
\documentclass{article}
\usepackage{catoptions}
\usepackage[balancingshow]{multicol}
\usepackage{doc}
\begin{document}
Test
\end{document}
\documentclass{article}
\usepackage{catoptions}
\usepackage[demo]{graphicx}
\usepackage{rotating}
\begin{document}
Test
\end{document}
所有这些示例在不使用时都可以编译成功catoptions
,但使用时则会失败。
答案1
实验一:
\documentclass{article}
\usepackage[cmyk]{xcolor}
\usepackage{xcolor}
\begin{document}
a
\end{document}
终端输出:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./exp.tex
LaTeX2e <2016/03/31> patch level 2
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2016/texmf-dist/tex/latex/xcolor/xcolor.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/color.cfg)
(/usr/local/texlive/2016/texmf-dist/tex/latex/pdftex-def/pdftex.def
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)))
No file exp.aux.
(/usr/local/texlive/2016/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) [1{/usr/local/texlive/2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./exp.aux) )</usr/local/texlive/2016/texmf-dist/fonts/type1/public/amsfonts/cm
/cmr10.pfb>
Output written on exp.pdf (1 page, 9748 bytes).
Transcript written on exp.log.
实验2:
\documentclass{article}
\usepackage[cmyk]{xcolor}
\usepackage[cmyk]{xcolor}
\begin{document}
a
\end{document}
相同的终端输出。
实验3:
\documentclass{article}
\usepackage{xcolor}
\usepackage[cmyk]{xcolor}
\begin{document}
a
\end{document}
错误:
! LaTeX Error: Option clash for package xcolor.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
实验4:
\documentclass{article}
\usepackage{catoptions}
\usepackage[cmyk]{xcolor}
\usepackage{xcolor}
\begin{document}
a
\end{document}
错误与实验 3 相同。
评论
该catoptions
包改变了 的定义,该定义由(和)\@fileswith@ptions
内部使用。\usepackage
\RequirePackage
如果没有它,手册中有关包加载的陈述是正确的:加载具有不同选项集的包会引发错误,除非第二次(或进一步)调用在第一次调用中使用原始选项集的子集(例如没有选项)。