努力寻找 Latex 错误 – 重新定义问题
我一直在尝试用上面的鱼叉编写矢量符号的几种方法,如对早期帖子的几条回复中所述: 如何设置上方带有水平线的矢量和张量符号
它们都运行良好,我只是进行了实验,注释掉各种替代方案以查看每种方案的效果 - 然后突然开始出现编译错误:-
“! LaTeX Error: Command `\vec' already defined.”
唉,由于我临时尝试了每个矢量符号,我不太清楚我是如何得到这个错误的。只需撤消最后一个注释掉的部分当然应该“修复它”——但事实似乎并非如此!奇怪的是,绘制该矢量的不同方法仍然出现在 .pdf 输出中(正确呈现)。我一定是添加了一些东西导致重新定义错误——但经过多次搜索,我还是找不到它是什么!
\vec
开始在文件中寻找所述符号\usepackage{}
.sty
。结果发现它在和\vec
中都有定义。现在的问题是如何纠正这种情况?amsmath.sty
fdsymbol.sty
在可能有许多 的 miktex 构建中,这种重新定义(冲突)是否很常见\usepackage{}
?或者如果不是,那么每个“标识符”(抱歉,缺乏正确的术语)如何在整个.tex
构建中保持唯一的存在?Tex 系统是否有任何方法来处理符号名称的冲突?
总结一下我的问题:1. 如何纠正这个重新定义错误2. 在未来我应该如何处理与TeX
避免\usepackage
s中的重新定义问题有关的一般用法
以下是错误信息
~~~~~~~~~~~~~~~~~~~~~~~~~
"C:\Program Files\MiKTeX 2.9\tex\latex\fdsymbol\fdsymbol.sty
! LaTeX Error: Command `\vec' already defined.
See the LaTeX manual or LaTeX Companion for explanation.Type H <return> for immediate help
.... ...ccent{\vec}{\mathord}{largesymbols}{"84}
~~~~~~~~~~~~~~~~~~~~~~~~~
In fdsymbol.sty, line 1799 has:-
\DeclareMathAccent{\vec}{\mathord}{largesymbols}{"84}
谢谢
答案1
我被要求将我的意见总结成一个答案。事实上,我可以轻松地编写
\documentclass{article}
\usepackage{fdsymbol}
\usepackage{amsmath}
\begin{document}
$\vec x$
\end{document}
但是,如果两个包都希望定义相同的命名符号(或宏),则可以使用一种技术。也就是说,一旦第一个包被加载,你就可以使用\vec
语法“取消定义”冲突的符号(在本例中我们称之为 )。
\let\vec\relax
然后,您可以加载第二个包,而不会出现任何投诉/警告。
我在评论中提到的另一点是,aux
一次运行创建的文件会被导入到随后的第二遍编译中。因此,如果在工作的任何阶段出现问题,aux
即使源tex
文件得到更正,问题的残余仍可能隐藏在文件中。因此,在这种情况下,强烈建议aux
在重新编译尝试之前删除文件。同样的建议通常适用于与编译相关的其他附加文件,但大多数情况下错误在于文件aux
。