![新命令第一个参数的可选值存在问题](https://linux22.com/image/364897/%E6%96%B0%E5%91%BD%E4%BB%A4%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%82%E6%95%B0%E7%9A%84%E5%8F%AF%E9%80%89%E5%80%BC%E5%AD%98%E5%9C%A8%E9%97%AE%E9%A2%98.png)
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
%définition de variable texte pour compilation conditionnelle
\def\ChoixDeVersion{AB} %AB=Avec Barème, SB ou autre = sans bareme
\usepackage{ifthen}
\newcommand{\bareme}[1][2 ]{%
\ifthenelse{\equal{\ChoixDeVersion}{AB}}%
{#1 AB \ignorespaces}%
{#1 \ignorespaces}%
}
\begin{document}
\bareme{123 }
\end{document}
\bareme
即使我在调用命令时给出了参数, 该命令第一个参数的可选值也会一直显示
\bareme{123 }
给出
我希望 123 AB
。当我调用命令 (123) 时,参数的值应该取代第一个参数 (#1) 的可选值 (2)。
我的错误在哪里?
答案1
免责声明:我不建议滥用g
或G
可选参数说明{}
符。
LaTeX 只有等[]
作为可选参数\newcommand
。使用g
或G
来自xparse
(使用expl3
LaTeX 3 的“即将推出”的格式),可以应用\NewDocumentCommand
并提供可与G{2}
一起使用的可选参数——如果根本没有指定,则是参数的默认值。{}
[]
2
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{xparse}
%définition de variable texte pour compilation conditionnelle
\def\ChoixDeVersion{AB} %AB=Avec Barème, SB ou autre = sans bareme
\usepackage{ifthen}
\NewDocumentCommand{\bareme}{G{2}}{%
\ifthenelse{\equal{\ChoixDeVersion}{AB}}%
{#1 AB \ignorespaces}%
{#1 \ignorespaces}%
}
\begin{document}
\bareme{123}
\bareme
\end{document}