LaTeX: пробел после каждой буквы - PullRequest
6 голосов
/ 17 октября 2010

Я хочу определить команду LaTeX, которая вставляет пробел после каждой буквы.

Итак, если я добавлю

\addSpaces{someText}

результат должен быть

s o m e T e x t 

Как мне этого добиться?

Фон: я хочу, чтобы каждая буква была подчеркнута, но строка должна быть разделена между буквами:

s o m e T e x t 
_ _ _ _ _ _ _ _

NOT:
s o m e T e x t
_______________ 

Ответы [ 2 ]

3 голосов
/ 17 октября 2010

Вы можете использовать пакет соул для подчеркивания. Для отдельных слов вы можете использовать макрос \addspaces, который я написал ниже. (Макрос поглотит пространство между словами. Простой обходной путь - использовать \ quad для увеличения расстояния между словами.)

\documentclass{article}

\usepackage{soul}% provides underlining

\makeatletter% since we're using a macro containing @
\newcommand{\addspaces}[1]{%
  \@tfor\letter:=#1\do{%
    \ul{\letter}\space
  }%
}
\makeatother% resets @ to its original meaning

\begin{document}

% Works fine for single words
\addspaces{Spaces}

% Note that spaces in between words aren't preserved -- use \quad to add extra space.
\addspaces{Spaced\quad and\quad underlined.}

\end{document}
2 голосов
/ 19 октября 2010

Для программных манипуляций с текстом мне гораздо проще использовать perltex, чтобы определить функцию perl для выполнения кода, а затем скомпилировать документ.См. CTAN здесь.

Вот быстрый и грязный.

\documentclass{article}
\usepackage{perltex}

\perlnewcommand{\ulspace}[1]{
$input = shift;
$input =~ s/(\w)/\\underline\{\1\} /g;
return $input;
}

\begin{document}

\ulspace{Hello World}

\end{document}

Скомпилировать с:

perltex --latex=pdflatex myfile.tex
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...