LaTeX 错误:命令 \etalchar 已定义

LaTeX 错误:命令 \etalchar 已定义

有人遇到过以下错误吗?我该如何解决?快速谷歌搜索似乎没有帮助,我猜问题可能不是出在 \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

  1. 找到您要使用的.bst文件\bibliographystyle,例如/usr/share/texlive/texmf-dist/bibtex/bst/bibtex/alpha.bst在 Linux 或C:\MiKTeX 2.9\bibtex\bst\bibtex\alpha.bstWindows 上
  2. 编辑文件并导航至该FUNCTION {begin.bib}部分
  3. 改成\newcommand{\etalchar}[1]{$^{#1}$}\providecommand{\etalchar}[1]{$^{#1}$}
  4. 跑步 (sudotexhash
  5. 在 TeXstudio 中清理 LaTeX 项目中的辅助文件(例如,使用工具 - 清理辅助文件)
  6. 重新编译您的文档

相关内容