根据 \NewDocumentEnvironment 中的可选参数执行操作

根据 \NewDocumentEnvironment 中的可选参数执行操作

对于以下环境,我想创建#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}

代码输出

相关内容