我想重新定义,\cite{}
以便文本像
\cite{blah:1991:pldi}
被替换为
\cite{blah:1991:pldi:short}
我尝试了以下操作:
\let\oldcite\cite
\renewcommand{\cite}[1]{\oldcite}{#1:short}}
但是,这不适用于有多个参数的情况\cite{}
。
例如,我想
\cite{blah1, blah2}
被取代
\cite{blah1:short, blah2:short}
也一样。
有什么建议么?
答案1
假设您不使用重新定义的包\cite
(如cite.sty
),请尝试以下操作:
\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:short}}\fi
\@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}%
\G@refundefinedtrue
\@latex@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
\makeatother