当我使用\cite[p. 114]{Smith}
并且 bibitemSmith
未在参考书目中定义时,会收到警告there were unresolved citations
。因此,编译后会出现类似的输出[?, p. 114]
。是否可以更改命令的定义,\cite
以便在尚未定义 bibitem 时 \cite[p. 114]{Smith}
生成[Smith, p. 114]
。
我没有使用特定的包。文档大致如下:
\documentclass{article}
\begin{document}
\cite[p. 114]{Smith}
\begin{thebibliography}{99}
\bibitem{John}
\end{thebibliography}
\end{document}
答案1
您可以重新定义内部命令。请注意,如果您加载更改引用命令的软件包(如 natbib、jurabib 等),这可能会中断。下划线需要 T1 编码。
\documentclass{article}
\usepackage[T1]{fontenc}
\makeatletter
\def\@citex[#1]#2{\leavevmode
\let\@citea\@empty
\@cite{\@for\@citeb:=#2\do
{\@citea\def\@citea{,\penalty\@m\ }%
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
\if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
\@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries \detokenize\expandafter{\@citeb}}%
\G@refundefinedtrue
\@latex@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
\makeatother
\begin{document}
\cite[p. 114]{Smith}
\cite[p. 114]{Smith_blub}
\begin{thebibliography}{99}
\bibitem{John}
\end{thebibliography}
\end{document}