引用页码请用括号括起来

引用页码请用括号括起来

当我使用\bibliographystyle{plain}并输入时Hello~\cite[Fig.~6]{wickerson15}.,我得到如下信息:

你好[1,图6]。

我不喜欢这里的逗号分隔符,而希望我的\cite命令产生

你好[1(图6)]。

做到这一点最简单的方法是什么?

答案1

这非常简单。;-)

负责最终打印引文的宏是\@cite,标准定义是

% latex.ltx, line 6271:
\def\@cite#1#2{[{#1\if@tempswa , #2\fi}]}

如果有可选参数,则将条件\if@tempswa设置为真。\cite

\begin{filecontents*}{\jobname.bib}
@article{uthor2015,
 author={A. Uthor},
 title={A paper},
 journal={Journal},
 year={2015},
 pages={1-10},
}
\end{filecontents*}

\documentclass{article}

\makeatletter
\renewcommand\@cite[2]{[{#1\if@tempswa\ (#2)\fi}]}
\makeatother

\begin{document}

Citation~\cite[p.~3]{uthor2015}.

\bibliographystyle{plain}
\bibliography{\jobname}

\end{document}

在此处输入图片描述


一种可能的解决方案natbib(当使用数字引用时)如下。

\begin{filecontents*}{\jobname.bib}
@article{uthor2015,
 author={A. Uthor},
 title={A paper},
 journal={Journal},
 year={2015},
 pages={1-10},
}
\end{filecontents*}

\documentclass{article}
\usepackage[numbers]{natbib}

\makeatletter
\def\NAT@cmt#1\fi{ (#1)\fi}
\makeatother

\begin{document}

Citation~\cite[p.~3]{uthor2015}.

Citation~\cite[Pre][post]{uthor2015}

\bibliographystyle{plainnat}
\bibliography{\jobname}

\end{document}

在此处输入图片描述

答案2

我后来意识到我曾是毕竟使用natbib包;它是由我的文档类加载的。这意味着 egreg 的解决方案对我来说不起作用 - 也许natbib没有使用\@citeegreg 重新定义的命令?但是,以下是通过结合 Mico 和 Timm 的评论得出的

\setcitestyle{notesep={\ }}
\let\oldcite\cite
\renewcommand\cite[2][]{%
\ifx\\#1\\%
  \oldcite{#2}%
\else%
  \oldcite[(#1)]{#2}%
\fi}

效果很好。谢谢大家。

编辑。现在我正在使用biblatex,下面的方法似乎对我有用:

\renewcommand*{\postnotedelim}{\space}
\let\oldcite\cite
\renewcommand\cite[2][]{%
\ifx\\#1\\%
  \oldcite{#2}%
\else%
  \oldcite[(#1)]{#2}%
\fi}

相关内容