2010-10-17 3 views
4

Я хочу определить команду LaTeX, которая вставляет пробел после каждой буквы.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 
_______________ 
+0

Итак ... сделал один из них работает для вас? Все еще есть проблемы? –

ответ

3

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

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

Для программной манипуляции текстом я считаю, что гораздо проще в использовании 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} 

Compile с:

perltex --latex=pdflatex myfile.tex 
Смежные вопросы