命令打印参数的 If-then-else 条件

命令打印参数的 If-then-else 条件

我是 Latex 的初学者,在 LaTEX 中实现“if-then-else”条件时遇到了一些问题。具体来说,我尝试在命令 \newenvironment 中传递参数时打印参数,而未传递参数时不打印任何内容。

当传递参数时,我得到了这个结果(请注意,参数被打印了两次。这不是我们所希望的。):

在此处输入图片描述

当没有传递参数时,括号仍然保留,但里面没有文本。编译器给出错误`

Undefined control sequence. \begin{exercise}{}

该问题感兴趣的整个代码部分如下。

\newenvironment{exercise}[1]% environment name{
\par\vspace{\baselineskip}\noindent
\refstepcounter{exercise}%

\textbf{Esercizio \theexercise \IfNoValueTF{#1}{}{ (#1)}}%

\begin{itshape}%
    \par\vspace{\baselineskip}%
    \noindent\ignorespaces
}%
{% end code
\end{itshape}%
\par\vspace{\baselineskip}%
\noindent\ignorespacesafterend}

希望我已经表达得足够清楚了。提前谢谢您!

答案1

你混淆了语法\IfNoValueTFxparse\NewDocumentEnvironment语法并要求您使用可选参数构建环境o

在此处输入图片描述

\documentclass{article}

\usepackage{xparse}

\newcounter{exercise}
\NewDocumentEnvironment{exercise}{o}
  {% \begin code
   \par\vspace{\baselineskip}\noindent
   \refstepcounter{exercise}%
   \textbf{Esercizio \theexercise \IfNoValueTF{#1}{}{ (#1)}}%
   \par\nobreak\vspace{\baselineskip}%
   \itshape\noindent\ignorespaces
  }%
  {% end code
   \par\vspace{\baselineskip}%
   \ignorespacesafterend
  }

\begin{document}

\begin{exercise}
This is an exercise
\end{exercise}

\begin{exercise}[abc]
This is another exercise
\end{exercise}

\end{document}

相关内容