我希望能够在引用标注年份周围选择方括号或圆括号,因为我的老师希望只有当引用标注在括号内时才使用方括号,否则使用括号。
例如:“我们想在本章中引用 Hock (1986)、Antilla (1989) 和 Fox (1995)(以及 Rankin [2003] 和 Ringe [2013]),[...]”
有办法吗?
答案1
你的老师确实提出了一个奇怪的要求。我只能想到定义你自己的\cite
命令,以便在括号内使用。
我假设您不太需要方形版本,因此我将一个默认round
选项传递给natbib
,然后定义相应的命令:\sqcitet
和\sqcitep
只是用于(本地)更改引用样式的包装器。
\begin{filecontents}{\jobname.bib}
@ARTICLE{feyn54,
title = {Testing},
author = {R. P. Feynman},
journal = {Phys. Rev.},
year = {1954},
volume = {94},
pages = {262}
}
\end{filecontents}
\documentclass{article}
\usepackage[round]{natbib}
\makeatletter
\newcommand{\bianca}{\renewcommand\NAT@open{[}\renewcommand\NAT@close{]}}
\makeatother
\newcommand*\sqcitet[1]{{\bianca\citet{#1}}}
\newcommand*\sqcitep[1]{{\bianca\citep{#1}}}
\begin{document}
We would like to cite some in-line \citet{feyn54} and \citep{feyn54}, and of course in brackets as well:
(with \sqcitet{feyn54} and \sqcitep{feyn54})
We would like to cite some in-line \citet{feyn54} and \citep{feyn54}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}
补充说明
该文档提供了两种改变引用样式的方法,即(i)\setcitestyle{square}
和(ii)创建一个新的\bibstyle@xxx
并用 调用它\citestyle{xxx}
。
方法 (i) 很容易实现,而方法 (ii) 的实现可以在我之前对此答案的编辑中看到。但是……
第一种方法添加了虚假间距,而第二种方法全局设置了样式。(因此两者都不令人满意)。
因此,我暂时选择了使用 and 明确设置左括号和右括号\renewcommand\NAT@open{[}
。\renewcommand\NAT@close{]}