我正在尝试使用包amscd
来制作交换图。如果我写下以下内容,一切都会顺利进行:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{amscd}
\begin{document}
$\begin{CD}
A @>b>> C\\
@VVV @VVV\\
C @>>> R (V)
\end{CD}$
\end{document}
但是,如果我english
用替换spanish
它,它就不再起作用了。我得到:
"Runaway argument?
b>> C\\ @VVV @VVV\\
C @>>> R (V)
\end {CD}$
\end {document}
! File ended while scanning use of \ @>.
<inserted text>
\par
<*> prueba1.tex
I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.
! Emergency stop.
<*> prueba1.tex
*** (job aborted, no legal \end found)"
有什么提示说明如何在不使用该english
选项的情况下解决该问题?
答案1
问题是巴别塔激活字符<
并>
为了提供“多级”引用的简写。
如果你不需要这些简写,你可以使用 Gonzalo Medina 提出的技术(即选项es-noquoting
或更激进的es-noshorthands
)。否则代码
\usepackage{etoolbox}
\preto\CD{\deactivatequoting}
加载后计算机辅助设计将完成相同的工作,仅为了环境而停用角色CD
。
应该意识到,如果使用 T1 编码字体,组合<<
和>>
已经形成“和”的连字(无需激活它们)。包引用可以代替quoting
西班牙语模块提供的环境巴别塔。
答案2
这spanish
使babel
某些字符处于活动状态以构建简写;这些简写将与非西班牙语文档中字符的标准用法相冲突。要防止此问题,请babel
按以下方式加载:
\usepackage[spanish,es-noshorthands]{babel}
这将禁用所有简写;要仅禁用与引用冲突的字符,您可以使用
\usepackage[spanish,es-noquoting]{babel}
答案3
该命令\deactivatequoting
也可以解决这个问题,您也可以随后再次激活它。
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{amscd}
\begin{document}
\deactivatequoting
$\begin{CD}
A @>b>> C\\\
@VVV @VVV\\ C @>>> R (V)
\end{CD}$
\activatequoting
\end{document}