以下简单的 MWE 会产生错误:
\documentclass{book}
\usepackage{complexity}
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\begin{document}
Test!
\end{document}
字面上地:
! LaTeX Error: Command \lang already defined.
Or name \end... illegal, see p.192 of the manual.
这是可以在用户层面处理的事情吗?
答案1
该complexity
包定义了\lang
排版“语言”名称,例如\CVP
(电路值问题)和\SAT
(可满足性)。我不确定将这些归类为“语言”是否合理。无论如何,绝对不可能更改名称。
另一方面,通过以下方式polyglossia
定义环境lang
\newenvironment{lang}[2][]{%
\begin{otherlanguage}[#1]{#2}%
}{%
\end{otherlanguage}
}%
这基本上是 的简写otherlanguage
。
你需要做出选择:
- 不使用
complexity
;或 - 避免
lang
对环境产生不利影响otherlanguage
。
如果你追求后一种策略,那么
\documentclass{book}
\usepackage{polyglossia}
% undefine the lang environment
\let\lang\relax\let\endlang\relax
\usepackage{complexity}
\setdefaultlanguage[variant=american]{english}
\begin{document}
Test!
\end{document}
答案2
该complexity
包定义了\lang
宏。
该polyglossia
包定义了lang
环境(即\lang
和\endlang
宏)。
您可以在加载包之前将lang
环境重命名为。polyglossialang
complexity
\documentclass{book}
\usepackage{polyglossia}
% rename 'lang' environment to 'polyglossialang'
\let\polyglossialang\lang
\let\endpolyglossialang\endlang
\let\lang\relax
%
\usepackage{complexity}
\setmainlanguage{english}
\setotherlanguage{french}
\begin{document}
Test!
\begin{polyglossialang}{french}
Test!
\end{polyglossialang}
\end{document}