具有 0、1 或 2 个参数的宏

具有 0、1 或 2 个参数的宏

是否可以构建一个接受 0、1 或 2 个参数的宏?为什么?我想要以下功能。

  1. \exerciceExercice单独打印。
  2. \exercice{2}将打印Exercice (2 pts)
  3. \exercice{2}{Source:...}将打印Exercice (2 pts) [Source: ...]

答案1

更好的方法:使用键值语法。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\exercice}{O{}}
 {
  \group_begin:
  \keys_set:nn { projetmbc/ex } { #1 }
  \par\vspace{\topsep}\noindent Exercice
  \tl_if_empty:NF \l_projetembc_ex_pts_tl
   { ~(\tl_use:N \l_projetembc_ex_pts_tl\nobreakspace pts) }
  \tl_if_empty:NF \l_projetembc_ex_note_tl
   { ~[\tl_use:N \l_projetembc_ex_note_tl] }
  \group_end:
  \quad\ignorespaces
 }
\keys_define:nn { projetmbc/ex }
 {
  points .tl_set:N = \l_projetembc_ex_pts_tl ,
  note   .tl_set:N = \l_projetembc_ex_note_tl ,
 }
\ExplSyntaxOff

\begin{document}

\exercice Text

\exercice[points=2] Text

\exercice[note=Source: folklore] Text

\exercice[points=4,note=Source: folklore] Text

\end{document}

在此处输入图片描述

相关内容