有条件引用

有条件引用

我正在写一章,想控制最后是否出现引用。

类似于全局变量:

CITATIONS_APPEAR = TRUE

if TRUE:
   citations will appear
if FALSE:
   citations will not appear

换句话说,我将像往常一样使用 \cite(或修改后的 \cite)命令编写文档,但引用是否出现由 CITATIONS_APPEAR 控制。

答案1

当您不需要引用时,您可以覆盖该\cite命令,或者在需要时设置常规。我们使用\unskip\citeletltxmacro正确存储可选参数启用\cite\oldcite然后通过以下方式将其重新定义为条件\ifcitation

在此处输入图片描述

\documentclass{book}

\usepackage{xparse,letltxmacro}

\newif\ifcitation

\LetLtxMacro\oldcite\cite
\RenewDocumentCommand{\cite}{o m}{%
  \ifcitation
    \IfValueTF{#1}
      {\oldcite[#1]{#2}}% \cite[.]{..}
      {\oldcite{#2}}% \cite{..}
  \else
    \unskip
  \fi
}

\begin{document}

\nocite{*}

\chapter{A chapter}

\citationfalse
\noindent Some citation \cite{abc, def}. In \cite[p.~56]{abc} it is mentioned that \ldots

\citationtrue
\noindent Some citation \cite{abc, def}. In \cite[p.~56]{abc} it is mentioned that \ldots

\let\cleardoublepage\relax% Just for this example

\begin{thebibliography}{x}
  \bibitem{abc} Abc.
  \bibitem{def} Def.
\end{thebibliography}

\end{document}

xparse只是提供了一个简单的界面来指定和限制可选参数的使用。

相关内容