包 graphicx 和 ifthen 问题

包 graphicx 和 ifthen 问题
\documentclass{article}
\usepackage{ifthen}
\usepackage[final,pdftex]{graphicx}
\newboolean{GraphicsDraft}
\setboolean{GraphicsDraft}{true}
\newcommand{\nograph}{%
  \ifthenelse{\boolean{GraphicsDraft}}
  {true}%
  {false}%
}%nograph

\begin{document}
\includegraphics*[draft=\nograph]{pic} % This gives an error
%
\renewcommand\nograph{\ifGraphicsDraft true\else false\fi}
\includegraphics*[draft=\nograph]{pic} % This is OK
\end{document}

ifthenelse 有问题,而 \ifGraphicsDraft 可以工作

我是不是做了什么蠢事或者这真的是一个 bug

答案1

您需要一个可扩展的测试,但它\ifthenelse并不具备。

\documentclass{article}
\usepackage[final]{graphicx}
\usepackage{etoolbox}

\newtoggle{GraphicsDraft}
\togglefalse{GraphicsDraft}

\newcommand{\nograph}{%
  \iftoggle{GraphicsDraft}{true}{false}%
}

\begin{document}

\includegraphics[draft=\nograph]{example-image-a}

\toggletrue{GraphicsDraft}

\includegraphics[draft=\nograph]{example-image-b}

\end{document}

在此处输入图片描述

答案2

密钥的值draft必须扩张为真或假,并且\ifthenelse不能通过扩展起作用。它失败的原因与

\includegraphics[draft=\def\tmp{true}\tmp]

失败,即使\def\tmp{true}\tmp可以排版true

你可以,正如你指示的那样使用

\renewcommand\nograph{\ifGraphicsDraft true\else false\fi}

或者更简单,根本没有开关,而是

\setboolean{GraphicsDraft}{true}

或者

\setboolean{GraphicsDraft}{true}

只要

\newcommand\nograph{true}

或者

\newcommand\nograph{false}

然后\nograph直接扩展为true或false。

相关内容