对于以下环境,我想创建#3
一个可选参数。当#3
存在时,文本从下一行开始。当#3
缺少时,文本将写在相邻区域,就像定理环境所做的那样。
\NewDocumentEnvironment{Pz}{mmm}
%% General Proposition
%% \Pz {SPECIFIER} {LOCATOR} {TITLE}
{ \noindent #1 \ #2 \ (#3) }
{}
\begin{document}
\maketitle
\tableofcontents
\chapter {This is an introduction
to some topic}
\section{Some Section}
This section is about this and that.
\begin{Pz}{Theorem}{GCHQ}{Pythagoras}
Some Text
\end{Pz}
\begin{Pz}{Theorem}{GCHQ}
Some Text on new line
\end{Pz}
\end{document}
以下方法无效
\NewDocumentEnvironment{Pz}{mmO{}}
%% General Proposition
%% \wvPz {SPECIFIER} {LOCATOR} {TITLE}
%% TITLE Optional, Default Empty
{ \noindent #1 \ #2 \ (#3)
\IfValueT {#3} { \newline }
}
{}
答案1
类似这样。可选参数由o
说明符表示,(或者O{default}
如果您想要一个具有默认值的可选参数。然后,您可以使用测试\IfNoValueTF{no arg}{arg}
或其替代方案之一来测试是否提供了该参数。
\documentclass{article}
\NewDocumentEnvironment{Pz}{mmo}
{\IfNoValueTF{#3}
{\noindent #1 \ #2 }%
{\noindent #1 \ #2 \ (#3)\par}%
}
{}
\begin{document}
\begin{Pz}{Theorem}{GCHQ}[Pythagoras]
Some Text
\end{Pz}
\begin{Pz}{Theorem}{GCHQ} Some Text
\end{Pz}
\end{document}