使用 cite 包中的罗马数字进行引用

使用 cite 包中的罗马数字进行引用

如同例如,我正在使用\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}

我发现了几个这样的问题,例如123;但它们都使用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

相关内容