我已经尝试了好几个小时了。可能是我错过了一些简单的事情...
我有一个宏\newcommand{\cf}[1]{\footnote{Cf. #1}}
(通常使用\cf{\cite{xx}}
)。现在我想扩展它,让它记住我最后使用的参考文献,如果再次使用相同的参考文献,则不打印引文而是打印“Ibd。”。
因此我修改了它
\newcommand{\cf}[1]{
Cf.
\ifthenelse{\equals{\SVE}{#1}}{%
ibd.}{%
#1
\def\SVE#1
}
}
但那行不通。\SVE
仍然是空的(或者不管我先如何初始化它)。到目前为止,我做了很多实验,像疯了一样把\expandafter
s、\noexpand
s、... 放来放去……但没有结果。
- 编辑:
以下是复制的完整代码:
\documentclass{article}
% somewhere in my preamble
\usepackage{ifthen}
\newcommand{\LLfootnoteLastCite}{}
\newcommand\LLfootnoteCite[1]{%
\ifthenelse{\equal{\LLfootnoteLastCite}{#1}}{%
ibd.}{%
#1%
\def\LLfootnoteLastCite{#1}%
}%
}
\newcommand{\LLfootnote}[3]{\footnote{#3~#2\ifx#10\else, S. #1\fi.}}
% the exposed commands
\newcommand{\vgl}[2][0]{\LLfootnote{#1}{\LLfootnoteCite{#2}}{Vgl.}}
% small working example
\begin{document}
This is a\vgl{\cite{Reference}}. And this is the second\vgl{\cite{Reference}}. And this is a third\vgl{\cite{Reference2}}
\end{document}
答案1
\documentclass{article}
\usepackage{ifthen}
\newcommand\SVE{}% initialize
\newcommand{\cf}[1]{%you need this %
Cf.
\ifthenelse{\equal% \equal not \equals
{\SVE}{#1}}{%
ibd.}{%
#1% you need thi s%
\def\SVE{#1}% braces are mandatory for \def
}% you need this %
}
\begin{document}
\cf{aaa} \cf{aaa} \cf{zzz} \cf{zzz}
\end{document}