![根据文档版本使用备用引用键](https://linux22.com/image/258475/%E6%A0%B9%E6%8D%AE%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%A4%87%E7%94%A8%E5%BC%95%E7%94%A8%E9%94%AE.png)
我最大的敌人是页数限制。我使用 BibTeX 条目的短版本,以便将参考文献列表保持简短。现在我遇到的情况是,我将文件包含在期刊文章和书中。我想在书中使用长引用,在期刊中使用短引用。我定义了一个布尔值,如果我们在期刊 tex 文件中,则将其设置为 true,然后定义了一个命令,该命令应该根据布尔值的值返回短键或长键。但不知何故,这不起作用。有办法实现我的目标吗?
\documentclass{article}
\usepackage{natbib}
\usepackage{ifthen}
\provideboolean{jl}
\setboolean{jl}{true}
% cite alternate between the long and short citation key
\newcommand{\citekeyshortlong}[2]{\ifthenelse{\boolean{jl}}{#1}{#2}}
\begin{document}
\citet[\page 48]{\citekeyshortlong{XY-short}{XY-long}}
\end{document}
答案1
我建议把条件放在最外层,这样定义\citekeyshortlong
条件:
\usepackage{etoolbox}
\newtoggle{jl}
\toggletrue{jl} %% Use short refs
\iftoggle{jl}{%
\newcommand{\citekeyshortlong}[2]{#1}}{%
\newcommand{\citekeyshortlong}[2]{#2}}
(按照 Peter Grill 的建议,用 etoolbox 代替 ifthenelse - 尽管这也适用于 ifthenelse)。