hyperref 修改 ACL 样式文件的参考书目样式

hyperref 修改 ACL 样式文件的参考书目样式

我需要使用 ACL latex 样式,并且我想使用 hyperref 包,但它会改变参考书目项目在 pdf 中的显示方式。最小工作示例如下:

Alfred V. Aho 和 Jeffrey D. Ullman。1972 年。《解析、翻译和编译理论》,第 1 卷。Prentice-Hall,新泽西州恩格尔伍德克利夫斯。

  • \usepackage{hyperref}在序言中添加一行
  • 编译,看看引用风格如何变化:

[Aho and Ullman1972] Alfred V. Aho 和 Jeffrey D. Ullman。1972。《解析、翻译和编译理论》,第 1 卷。Prentice-Hall,新泽西州恩格尔伍德克利夫斯。

我没有找到任何hyperref可以阻止这种变化的选项,欢迎任何想法

谢谢,马克斯

答案1

问题在于以无法察觉的方式acl2012.sty重新定义了内部命令。因此,使用 时,打印的是引用的关键字。 \@lbibitemhyperrefhyperref

一个解决方法如下。hyperref重新定义使用一个命令,该命令通过\@BIBLABEL设置为标准默认值。这很方便,因为只有在命令尚未定义的情况下才会进行定义。因此,我们可以做的是在加载之前定义,以生成一个空文本。这是通过以下方式实现的:\@biblabel\providecommand*\providecommand*\@BIBLABELhyperref

\makeatletter
\newcommand{\@BIBLABEL}{\@emptybiblabel}
\newcommand{\@emptybiblabel}[1]{}
\makeatother
\usepackage{hyperref}

即我们设置\@BIBLABEL为命令,该命令又忽略其参数。由于命令名称中的符号,\@emptybiblabel此代码被括在中间。\makeatletter / \makeatother@

将其放在样本文档的精简版中acl2012.tex可得出:

\documentclass[11pt]{article}
\usepackage{acl2012}
\usepackage{times}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage{multirow}
\usepackage{url}

\makeatletter
\newcommand{\@BIBLABEL}{\@emptybiblabel}
\newcommand{\@emptybiblabel}[1]{}
\makeatother
\usepackage{hyperref}

\begin{document}

{\bf Citations}: Citations within the text appear
in parentheses as~\cite{Gusfield:97} or, if the author's name appears in
the text itself, as Gusfield~\shortcite{Gusfield:97}. Append lowercase letters to the year in cases of ambiguities. Treat double authors as in~\cite{Aho:72}, but write as in~\cite{Chandra:81} when more than two authors are involved. Collapse multiple citations as in~\cite{Gusfield:97,Aho:72}. 

\begin{thebibliography}{}

\bibitem[\protect\citename{Aho and Ullman}1972]{Aho:72}
Alfred~V. Aho and Jeffrey~D. Ullman.
\newblock 1972.
\newblock {\em The Theory of Parsing, Translation and Compiling}, volume~1.
\newblock Prentice-{Hall}, Englewood Cliffs, NJ.

\bibitem[\protect\citename{Chandra \bgroup et al.\egroup }1981]{Chandra:81}
Ashok~K. Chandra, Dexter~C. Kozen, and Larry~J. Stockmeyer.
\newblock 1981.
\newblock Alternation.
\newblock {\em Journal of the Association for Computing Machinery},
  28(1):114--133.

\bibitem[\protect\citename{Gusfield}1997]{Gusfield:97}
Dan Gusfield.
\newblock 1997.
\newblock {\em Algorithms on Strings, Trees and Sequences}.
\newblock Cambridge University Press, Cambridge, UK.

\end{thebibliography}

\end{document}

示例输出

pdf引用中的链接仍然指向相应的引用。

相关内容