格式化文本块

格式化文本块

我想完成以下任务:编写函数\mydictionary{} ,每两行取下面的内容

aa
bb
cc
dd
ee
ff
etc

并输出格式化

\textbf{aa}\textit{bb}
\textbf{cc}\textit{dd}
\textbf{ee}\textit{ff}
etc

我怎样才能在 LaTeX 中做到这一点?

提前致谢。

答案1

在此处输入图片描述

\documentclass{article}

\def\foo#1 #2 {%
\ifx!#1\else
\textbf{#1}\textit{#2} %
\expandafter\foo\fi}


\begin{document}

\foo
aa
bb
cc
dd
ee
ff
! !

\end{document}

答案2

我是编写宏的新手,因此这里有一个我发现更容易推理的简单变体:使用两个哨兵值,一个用于终止宏,一个用于标识参数的结束。

\documentclass{article}

\def\mydictionary#1 #2 #3!{%
\textbf{#1}\textit{#2}
\ifx Z#3\else\mydictionary#3!\fi}

\begin{document}

\mydictionary
aa
bb
cc
dd
ee
ff
Z!

\end{document}

当然,如果您的文本内部有任何!,或者某些奇数行以 Z 开头,则需要选择不同的分隔符才能获得所需的结果。

相关内容