我收到一个错误,但不知道原因:
(d:/texlive/2012/texmf-dist/tex/latex/enumitem/enumitem.sty)
(d:/texlive/2012/texmf-dist/tex/latex/tools/xspace.sty)
(d:/texlive/2012/texmf-dist/tex/latex/amsfonts/amsfonts.sty)
(d:/texlive/2012/texmf-dist/tex/latex/mh/breqn.sty
(d:/texlive/2012/texmf-dist/tex/latex/mh/flexisym.sty
(d:/texlive/2012/texmf-dist/tex/latex/mh/cmbase.sym)
(d:/texlive/2012/texmf-dist/tex/latex/mh/mathstyle.sty)))
(d:/texlive/2012/texmf-dist/tex/xelatex/polyglossia/gloss-english.ldf
! LaTeX Error: \do undefined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.6 }
?
我认为这是生成它的以下行:
\usepackage{polyglossia}
\setotherlanguage{english}
但为什么?
更新 小例子:File1.tex:
\documentclass[a4paper, 10pt, twocolumn]{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{algpseudocode}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage{xspace}
\usepackage{amsfonts}
\usepackage{breqn}
\setotherlanguage{english}
\setmainfont{Consolas}
文件2.tex
\input File1.tex
\begin{document}
\section{Section}
\end{document}
更新2
这是日志
答案1
为什么文件结构这么奇怪?
无论如何,这些包之间似乎存在一些奇怪的交互,特别是我必须amsthm
使用xelatex File2
文件1.tex:
\documentclass[a4paper, 10pt, twocolumn]{article}
\usepackage{amsthm}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{algpseudocode}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage{xspace}
\usepackage{amsfonts}
\usepackage{breqn}
\def\do{}
\setotherlanguage{english}
\setmainfont{Consolas}
\def\do{}
答案2
由于神秘的原因,flexysym.sty
加载的breqn.sty
确实
\edef\do{%
\noexpand\AtEndOfPackage{%
\catcode\number`\"=\number\catcode`\"
\relax
}%
}
\do \let\do\relax
在 LaTeX 内核中,\do
在许多地方用作临时控制序列,但是绝不据说\let\do\relax
。不幸的是,polyglossia
依赖于这个事实并gloss-english.ldf
使用\renewcommand*\do[1]{...}
。
这应该被视为breqn
和 中的一个错误polyglossia
。
说道\def\do{}
完之后\usepackage{breqn}
问题就解决了。
更好的方法flexysym.sty
是
\begingroup\edef\x{\endgroup
\noexpand\AtEndOfPackage{%
\catcode\number`\"=\number\catcode`\"
\relax
}%
}\x
而不使用\do
通常定义为带有参数的宏(具有各种含义)。