![LaTeX 错误:命令 \etalchar 已定义](https://linux22.com/image/360291/LaTeX%20%E9%94%99%E8%AF%AF%EF%BC%9A%E5%91%BD%E4%BB%A4%20%5Cetalchar%20%E5%B7%B2%E5%AE%9A%E4%B9%89.png)
有人遇到过以下错误吗?我该如何解决?快速谷歌搜索似乎没有帮助,我猜问题可能不是出在 \etalchar 上(我从来没有定义过它),而是出在一些有冲突的包上。
LaTeX Error: Command \etalchar already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \newcommand{\etalchar}[1]{$^{#1}$}
?
答案1
搜索此网站,http://tex.stackexchange.com/search?q=%5Cetalchar+表明该命令\etalchar
已存在,可用于参考书目应用程序。例如,它在文件alphadin.bst
(https://github.com/youkan/abschlussarbeit-latex/blob/master/alphadin.bst)
如果 OP 本人没有明确定义该命令,则可能意味着存在包冲突,其中两个独立的包都试图定义该宏\etalchar
。
但是,根据 OP 的评论,似乎意外对参考书目进行了冗余调用,这会导致尝试两次执行包含定义的同一套代码\etalchar
。因此,由于冗余,引发了一个错误。
代码相关部分alphadin.bst
:
FUNCTION {begin.bib}
{ et.al.char.used
{ "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
'skip$
if$
preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
newline$
"% this bibliography is generated by alphadin.bst [8.2] from 2005-12-21"
write$ newline$
newline$
"\providecommand{\url}[1]{\texttt{#1}}"
write$ newline$
"\expandafter\ifx\csname urlstyle\endcsname\relax"
write$ newline$
" \providecommand{\doi}[1]{doi: #1}\else"
write$ newline$
" \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
write$ newline$
}
答案2
根据建议这里,在您想要的文件中更改\newcommand
为对我有用:\providecommand
.bst
- 找到您要使用的
.bst
文件\bibliographystyle
,例如/usr/share/texlive/texmf-dist/bibtex/bst/bibtex/alpha.bst
在 Linux 或C:\MiKTeX 2.9\bibtex\bst\bibtex\alpha.bst
Windows 上 - 编辑文件并导航至该
FUNCTION {begin.bib}
部分 - 改成
\newcommand{\etalchar}[1]{$^{#1}$}
\providecommand{\etalchar}[1]{$^{#1}$}
- 跑步 (
sudo
)texhash
- 在 TeXstudio 中清理 LaTeX 项目中的辅助文件(例如,使用工具 - 清理辅助文件)
- 重新编译您的文档