我需要使用 ACL latex 样式,并且我想使用 hyperref 包,但它会改变参考书目项目在 pdf 中的显示方式。最小工作示例如下:
- 下载 ACL 样式文件http://acl2012.org/call/sub01.asp
- 参见 pdf 中的 bib 项目样式:
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
重新定义了内部命令。因此,使用 时,打印的是引用的关键字。 \@lbibitem
hyperref
hyperref
一个解决方法如下。hyperref
重新定义使用一个命令,该命令通过\@BIBLABEL
设置为标准默认值。这很方便,因为只有在命令尚未定义的情况下才会进行定义。因此,我们可以做的是在加载之前定义,以生成一个空文本。这是通过以下方式实现的:\@biblabel
\providecommand*
\providecommand*
\@BIBLABEL
hyperref
\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
引用中的链接仍然指向相应的引用。