1000 лет назад эта идея обсуждалась на comp.text.tex, и общий вывод заключался в том, что вы не можете сделать это удовлетворительно. В моей книге удовлетворительно - не делать персонажей активными, но я не понимаю, как это вообще может сработать.
лично, я бы хотел сделать пространство активным, а затем посмотреть \ spacefactor и \ MakeUppercase на следующий символ, если коэффициент равен 3000.
что-то вроде
\catcode\ \active % latex already has a saved space character -- \space
\def {\ifhmode% \spacefactor is invalid
% (or something) in vertical mode
\ifnum\spacefactor<3000\else% note: with space active,
% even cs-ended lines need %-termination
\expandafter\gobbleandupper\fi}%
\def\gobbleandupper#1{\def\tempa{#1}\def\tempb{ }%
\ifx\tempa\tempb% can''t indent the code, either :-(
% here, we have another space
\expandafter\gobbleandupper% try again
\else\space% insert a "real" space to soak up the
% space factor
\expandafter\MakeUppercase\fi}%
это на самом деле не делает работу - есть достаточно свободных концов, чтобы связать прыгуна из флайсайла. например, учитывая, что мы не можем полагаться на \ everypar в латексе, как вы пишете в верхнем регистре первую букву абзаца?
нет ... сколько бы это ни ранило (именно поэтому я избегаю лишних операций с ключами), нам нужно набрать латекс "правильно": - (