努力寻找 Latex 错误 – 重新定义问题

努力寻找 Latex 错误 – 重新定义问题

努力寻找 Latex 错误 – 重新定义问题

我一直在尝试用上面的鱼叉编写矢量符号的几种方法,如对早期帖子的几条回复中所述: 如何设置上方带有水平线的矢量和张量符号

它们都运行良好,我只是进行了实验,注释掉各种替代方案以查看每种方案的效果 - 然后突然开始出现编译错误:-

“! LaTeX Error: Command `\vec' already defined.”

唉,由于我临时尝试了每个矢量符号,我不太清楚我是如何得到这个错误的。只需撤消最后一个注释掉的部分当然应该“修复它”——但事实似乎并非如此!奇怪的是,绘制该矢量的不同方法仍然出现在 .pdf 输出中(正确呈现)。我一定是添加了一些东西导致重新定义错误——但经过多次搜索,我还是找不到它是什么!

\vec开始在文件中寻找所述符号\usepackage{} .sty。结果发现它在和\vec中都有定义。现在的问题是如何纠正这种情况?amsmath.styfdsymbol.sty

在可能有许多 的 miktex 构建中,这种重新定义(冲突)是否很常见\usepackage{}?或者如果不是,那么每个“标识符”(抱歉,缺乏正确的术语)如何在整个.tex构建中保持唯一的存在?Tex 系统是否有任何方法来处理符号名称的冲突?

总结一下我的问题:1. 如何纠正这个重新定义错误2. 在未来我应该如何处理与TeX避免\usepackages中的重新定义问题有关的一般用法

以下是错误信息

~~~~~~~~~~~~~~~~~~~~~~~~~

"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

相关内容