
В этом 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}
предотвратили разделение этой группы. Этот эффект можно использовать для набора специальных подстрок внутри последовательностей.
Фигурные скобки имеют очень важное синтаксическое значение и не должны использоваться в неформальном контексте.