如同这例如,我正在使用\usepackage{cite}
。现在,我需要用罗马数字标记所有引用。这是我的最小工作示例:
\documentclass{article}
\usepackage{cite}
\usepackage{filecontents}
\usepackage{hyperref}
\begin{filecontents}{test.bib}
@Article{art1,
author = {Author, A. N.},
title = {Title One},
journal = {Journal},
year = 2000
}
@Article{art2,
author = {Author, A. N.},
title = {Title Two},
journal = {Journal},
year = 2008
}
\end{filecontents}
\begin{document}
Refering to second article\cite{art2} and then first article\cite{art1}
\bibliographystyle{unsrt}
\bibliography{test}
\end{document}
我发现了几个这样的问题,例如1,2,3;但它们都使用biblatex
。
我怎样才能做到这一点?
答案1
对于参考书目
\renewcommand*{\@biblabel}[1]{[\romannumeral 0#1]}
应该可以工作(当然在之内\makeatletter...\makeatother
)。
如果没有hyperref
你可以使用
\renewcommand\citeform[1]{\romannumeral 0#1}
按照cite
手册中的建议进行引用。不幸的是,hyperref
将的参数\citeform
变成了不可扩展的链接,因此无法在此后期应用格式。通过hyperref
干扰,我可以通过重新定义来让事情正常运作\bibcite
。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{cite}
\usepackage{filecontents}
\usepackage{hyperref}
\makeatletter
\def\bibcite#1#2{%
\@newl@bel{b}{#1\@extra@binfo}{%
\hyper@@link[cite]{}{cite.#1\@extra@b@citeb}{\romannumeral 0#2}%
}%
}
\renewcommand*{\@biblabel}[1]{[\romannumeral 0#1]}
\makeatother
\begin{filecontents}{\jobname.bib}
@Article{art1,
author = {Author, A. N.},
title = {Title One},
journal = {Journal},
year = 2000
}
@Article{art2,
author = {Author, A. N.},
title = {Title Two},
journal = {Journal},
year = 2008
}
\end{filecontents}
\begin{document}
Refering to second article\cite{art2} and then first article\cite{art1}
\bibliographystyle{unsrt}
\bibliography{\jobname}
\end{document}
眼尖的人会发现边距不对,因为边距宽度的计算是在 BibTeX 端进行的,假设使用阿拉伯数字。
llncs.cls
您使用的类在其定义中直接重新定义,\@biblabel
我们thebibliography
只能通过重新定义整个环境来解决这个问题
\makeatletter
\renewenvironment{thebibliography}[1]
{\section*{\refname}
\renewcommand*{\@biblabel}[1]{[\romannumeral 0##1]}%
\small
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\if@openbib
\advance\leftmargin\bibindent
\itemindent -\bibindent
\listparindent \itemindent
\parsep \z@
\fi
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\if@openbib
\renewcommand\newblock{\par}%
\else
\renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
\fi
\sloppy\clubpenalty4000\widowpenalty4000%
\sfcode`\.=\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\makeatother