Prueba múltiple si o caso

Prueba múltiple si o caso

Tengo un nuevo comando que tiene parámetros opcionales: dependiendo de si el parámetro está vacío o no, me gustaría que la visualización fuera diferente. Cuando solo hay una prueba la logro sin problema pero cuando hay varias pruebas no encuentro como proceder.

con los 3 parámetros: display H(1)(2)(3) con 2 parámetros (el 3º está vacío): display (1)(2) con un solo parámetro (el 2 y el 3 están vacíos): display H(1 )

Respuesta1

Espero que esto te ayude.

El ifthenpaquete puede crear declaraciones condicionales en LaTeX. Eche un vistazo al siguiente ejemplo donde puede ver cómo definir un comando con tres argumentos opcionales que muestran diferentes resultados dependiendo de qué argumentos estén vacíos:

\usepackage{ifthen}
\newcommand{\mycommand}[3][]{%
  \ifthenelse{\equal{#1}{}}{}{H}%
  \ifthenelse{\equal{#1}{}}{}{(#1)}%
  \ifthenelse{\equal{#2}{}}{}{(#2)}%
  \ifthenelse{\equal{#3}{}}{}{(#3)}%
}

Este comando mostrará H(#1)(#2)(#3) si se proporcionan los tres argumentos, (#1)(#2) si solo se proporcionan los dos primeros argumentos y H(#1) si solo se proporcionan los dos primeros argumentos. Se proporciona el primer argumento. Esto es lo que estabas buscando?

Respuesta2

Quizás quieras hacer esto:

\def\H#1#2#3{H\ifx&#1&\else (#1)\ifx&#2&\else (#2)\ifx&#3&\else (#3)\fi\fi\fi}

\H{a}{}{}    % prints H(a)

\H{a}{b}{}   % prints H(a)(b)

\H{a}{b}{c}  % prints H(a)(b)(c)

\bye

Respuesta3

Parece algo superfluo usar múltiples argumentos opcionales, ya que su opcionalidad pasa a ser obligatoria una vez que necesitas usar más. A menos, por supuesto, que cambies la sintaxis.

La interfaz LaTeX3 para el uso de macros \NewDocumentCommandpermite negociar fácilmente (múltiples) argumentos opcionales utilizando argumentos ofor [](o d<token><token>para un par específico <token><token>). Las pruebas se realizan usando \IfValueTF{<arg>}{<true>}{<false>}(o más simplemente si no es necesario hacer nada cuando no se proporciona nada \IfValueT{<arg>}{<true>}).

ingrese la descripción de la imagen aquí

\documentclass{article}

% \mycommandA uses the default [] for optional arguments
\NewDocumentCommand{\mycommandA}{ o o o }{%
  \mathrm{H}
  \IfValueT{#1}{(#1)
    \IfValueT{#2}{(#2)
      \IfValueT{#3}{(#3)}}}
}
% \mycommandB uses () for optional arguments
\NewDocumentCommand{\mycommandB}{ d() d() d() }{%
  \mathrm{H}
  \IfValueT{#1}{(#1)
    \IfValueT{#2}{(#2)
      \IfValueT{#3}{(#3)}}}
}

\begin{document}

$\mycommandA[a]$

$\mycommandA[a][b]$

$\mycommandA[a][b][c]$

$\mycommandB(a)$

$\mycommandB(a)(b)$

$\mycommandB(a)(b)(c)$

\end{document}

información relacionada