我是 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
直接使用,这不是应该翻译成罗马的生成的数字,它是“源头”的罗马数字。