复杂性与多语性的不相容性

复杂性与多语性的不相容性

以下简单的 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

你需要做出选择:

  1. 不使用complexity;或
  2. 避免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环境重命名为。polyglossialangcomplexity

\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}

相关内容