Удалить лишние фигурные скобки

Удалить лишние фигурные скобки

В этом MWE я демонстрирую свою проблему:

\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}

Некоторые команды работают с дополнительными фигурными скобками, некоторые — нет. Почему так, и как заставить их работать, предварительно обрабатывая аргументы, когда у них есть дополнительные фигурные скобки?

решение1

Если аргумент не пустой и начальные пробелы можно удалить, то поможет следующий прием:

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

\@firstofoneопределяется в ядре LaTeX как:

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

Он захватывает первый токен как аргумент и выводит его снова, таким образом, он не делает "ничего". Но если аргумент - это не один токен, а группа токенов в фигурных скобках, то один уровень фигурных скобок удаляется.

решение2

Это в основном зависит отчтокоманда, с которой вы имеете дело.

Если у вас есть \textit{{xyz}}, дополнительные фигурные скобки просто добавляют уровень группировки; поскольку \seqsplitэто совершенно другая игра, поскольку эта команда сканирует свой аргумент по одному элементу за раз, а группа в фигурных скобках представляет собой один элемент.

Это описано в руководстве seqsplit, в разделе 2.3:

2.3 Группировка и команды

Команда \seqsplitне вставляет точки останова между буквами внутри фигурных скобок {...}.

[...(пропущенный пример)...]

Скобки вокруг {kahg}предотвратили разделение этой группы. Этот эффект можно использовать для набора специальных подстрок внутри последовательностей.

Фигурные скобки имеют очень важное синтаксическое значение и не должны использоваться в неформальном контексте.

Связанный контент