注意:我认为该ifdraft
包没有提供我所寻找的东西,但它可以被包装(我只是不知道如何:-))
我想这样做:
\ifdraft
... pgf graph component that's only for me
\fi
我目前正在使用\iffalse
和\fi
,但更改 20 个位置显然比更改一个位置更麻烦。我试图避免这样做,\ifdraft{do x}{do y}
因为 1) 它更丑陋,因此可读性更差 2) 95% 的用例都是\ifdraft{do X}{}
。如果有办法包装ifdraft{do X}{}
成\ifdraft X \fi
那样就完美了!
答案1
用一个\newif
。
\documentclass{article}
\newif\ifdraft
\drafttrue % or \draftfalse
\begin{document}
\ifdraft
This is a draft.
\else
This isn't.
\fi
\end{document}
该\else
部分可以省略。
答案2
你可以改变的含义\ifdraft
:
\documentclass[draft]{article}
\usepackage{ifdraft}
% save a copy of \ifdfraft
\let\ORIifdraft\ifdraft
% redefine it to be a normal conditional with \else and \fi
% according to the document condition
\ORIifdraft{\let\ifdraft\iftrue}{\let\ifdraft\iffalse}
\begin{document}
\ifdraft
DRAFT
\fi
Text.
\end{document}
或者,更好的方法是,您可以定义自己的新条件。这是我推荐的方法。
\documentclass[draft]{article}
\usepackage{ifdraft}
% define a new conditional with \else and \fi
% according to the document condition
\ifdraft{\let\ifxdraft\iftrue}{\let\ifxdraft\iffalse}
\begin{document}
\ifxdraft
DRAFT
\fi
Text.
\end{document}
答案3
你可以定义你自己的并且可以随意\ifdraftT
使用。\ifdraftT{do X}
否则,真正的 TeX也if
\ifdraft
需要\let
如此\iffalse
,\iftrue
否则可能会出错……
随着ifdraft
包加载后,你可以简单地
\let\ifdraft\if@draft
并\ifdraft
作为内部工作\if@draft
(由原始使用\ifdraft
)。
代码
\documentclass[draft]{article}
\usepackage{ifdraft}
\makeatletter
\let\ifdraft\if@draft
\newcommand*{\ifdraftT}{\if@draft\expandafter\@firstofone\else\expandafter\@gobble\fi}
\makeatother
\begin{document}
Foo\par
\ifdraft
something
\fi
Bar\par
\ifdraftT{something else}
Biba
\end{document}