\cite 命令中的罗马数字 latex

\cite 命令中的罗马数字 latex

我是 Latex 的初学者,我正在尝试弄清楚如何在 cite 命令的描述中包含罗马数字。例如,我希望它看起来像:

在此处输入图片描述

我在序言中说过,

\makeatletter
\newcommand*{\rom}[1]{\expandafter\@slowromancap\romannumeral #1@}
\makeatother

所以我做了,

\cite[\S\rom{7}.1 定理 7.3]{Was12}

但是当我这样做时,输出是我想要的,但我遇到了“缺失数字被视为零”错误。我如何修复此问题而不必为每个此类情况输入“VII”。

编辑:添加了 MWE: 我的Biblio.bib文件包含这个

@book{xyz,
  title={abcd},
  author={xyz},
  year={2012},
}

主要内容为:

\documentclass[a4paper,12pt,openright,twoside]{book}
\usepackage{textcomp}
\usepackage{graphicx}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage[english]{babel}  
{\renewcommand{\bibname}{References}}  
\usepackage[backend=bibtex,style=alphabetic]{biblatex} %Imports biblatex package
\addbibresource{Biblio.bib}
\makeatletter
\newcommand*{\rom}[1]{\expandafter\@slowromancap\romannumeral #1@}
\makeatother
\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=blue,
    citecolor=red,
}
\begin{document}
This is \cite[\S\rom{17} Theorem 4]{xyz}
\printbibliography
\end{document}

显示错误:

<to be read again> 
                   @
l.22 This is \cite[\S\rom{17} Theorem 4]{xyz}^^M
                                                
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

答案1

您没有显示收到的错误消息,也没有显示您的输入,但这不是由于显示的代码,也许是引用的 bib 条目中存在错误。

您展示的代码只是\@Roman您可以使用的标准命令的定义,但我在这里只会使用 VII;宏不会给您带来任何好处。

在此处输入图片描述

\documentclass{article}
\makeatletter
\newcommand*{\rom}[1]{\expandafter\@slowromancap\romannumeral #1@}
\newcommand\romb{\@Roman}
\makeatother


\begin{document}

\cite[\S\rom{7} Theorem 8]{aaa}

\cite[\S\romb{7} Theorem 8]{aaa}

\cite[\S VII Theorem 8]{aaa}

\begin{thebibliography}{99}
\bibitem{aaa} one two three
\end{thebibliography}
\end{document}

在此处输入图片描述

编辑问题后,错误是与 biblatex 不兼容:您需要使用该命令的强大版本。例如,使用\newDocumentCommand或定义\DeclareRobustCommand

\documentclass[a4paper,12pt,openright,twoside]{book}


{\renewcommand{\bibname}{References}}  
\usepackage[backend=bibtex,style=alphabetic]{biblatex} %Imports biblatex package
\addbibresource{Biblio.bib}
\makeatletter
\NewDocumentCommand\rom{m}{\@Roman{#1}}
\makeatother

\begin{document}
This is \cite[\S\rom{17} Theorem 4]{xyz}
\printbibliography
\end{document}

\rom{7}在这里使用确实是错误的,您应该引用印刷的作品,所以VII直接使用,这不是应该翻译成罗马的生成的数字,它是“源头”的罗马数字。

相关内容