修改 \citet* 的渲染

修改 \citet* 的渲染

我想改变\citet*使用较小字体和特定颜色的渲染。

下面的 MWE 适用于无星号版本\citet并产生

在此处输入图片描述

\documentclass{article}

\usepackage{filecontents}
\usepackage{natbib}
\usepackage{color}

\let\oldcitet=\citet
\renewcommand{\citet}[1]{{\footnotesize\textcolor[rgb]{.8, .1, .4}{\oldcitet{#1}}}}

\begin{filecontents}{refs.bib}
@book{ref,
title = {title},
author = {john and abi and fein},
location = {here},
publisher = {publisher},
year = {2017},
}
\end{filecontents}

\begin{document}

\citet{ref}

\citet*{ref}

\bibliography{refs.bib}

\bibliographystyle{plainnat}

\end{document}

的重新定义破坏了其星号版本的定义\citet。有什么建议可以解决这个问题吗?

答案1

为了在您的设置中适应带星号的版本,您需要*使用类似以下的方式设置使用条件:

\let\oldcitet=\citet
\makeatletter
\renewcommand{\citet}{\@ifstar\newcitetstar\newcitet}
\newcommand{\newcitet}[1]{{\footnotesize\textcolor[rgb]{.8, .1, .4}{\oldcitet{#1}}}}
\newcommand{\newcitetstar}[1]{{\footnotesize\textcolor[rgb]{.8, .1, .4}{\oldcitet*{#1}}}}
\makeatother

在此处输入图片描述

还有更简单的方法来协商其他选项,例如可选参数(例如)。对于更通用的方法,我会考虑xparse

相关内容