Quitar llaves adicionales

Quitar llaves adicionales

En este MWE, demuestro mi problema:

\documentclass{article}
\usepackage{seqsplit}
\newcommand{\dosomething}[1]{\uppercase{#1}}
\newcommand{\dosomethingelse}[1]{\seqsplit{#1}}
\begin{document}
    \dosomething{looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong}

    % works with extra {...}
    \dosomething{{looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong}}

    \dosomethingelse{looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong}

    % does not work with extra {...}
    \dosomethingelse{{looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong}}
\end{document}

Algunos comandos funcionan con llaves adicionales, otros no. ¿Por qué es así y cómo puedo hacer que funcionen preprocesando mis argumentos cuando tienen llaves adicionales?

Respuesta1

Si el argumento no está vacío y se pueden eliminar los espacios iniciales, entonces el siguiente truco ayuda:

\makeatletter
\newcommand{\dosomethingelse}[1]{%
  \expandafter\seqsplit\expandafter{\@firstofone#1}%
}
\makeatother

\@firstofonese define en el kernel de LaTeX como:

\long\def\@firstofone#1{#1}

Toma el primer token como argumento y lo genera nuevamente, por lo que no hace "nada". Pero si el argumento no es un token único, sino un grupo de tokens entre llaves, entonces se elimina un nivel de llaves.

Respuesta2

Depende principalmente dequécomando con el que estás tratando.

Si es así \textit{{xyz}}, las llaves adicionales simplemente añaden un nivel de agrupación; porque \seqsplites un juego de pelota completamente diferente, porque este comando escanea su argumento un elemento a la vez y un grupo entre corchetes es un solo elemento.

Esto se describe en el manual de seqsplit, en el apartado 2.3:

2.3 Agrupación y comandos

El comando \seqsplitno inserta puntos de interrupción entre las letras dentro de llaves {...}.

[...(ejemplo omitido)...]

Los tirantes alrededor {kahg}impidieron la división de este grupo. Este efecto se puede utilizar para componer subcadenas especiales dentro de secuencias.

Las llaves tienen un significado sintáctico muy importante y no deben usarse de manera casual.

información relacionada