请考虑以下示例:
\documentclass{minimal}
\def\myMultiLineText{%
Line One Line One \\ %
Line Two Line Two \\ %
Line Three Line Three \\ %
Line Four Line Four %
}
\begin{document}
Here is multi-line: \myMultiLineText ...
\end{document}
在文档中,我想插入类似以下内容:
Here is single-line: \doSingleLine{\myMultiLineText} ...
...宏基本上会从存储的文本中\doSingleLine{}
删除换行符( ) (因此其内容将呈现在一行上)。\\
\myMultiLineText
有人可以提供这样一个宏的例子吗?
答案1
\newcommand\doSingleLine[1]
{\let\normalnewline=\\
\let\\=\relax
#1%
\let\\=\normalnewline}
编辑:正如 egreg 所指出的,这并没有考虑到可选参数。这里有一个处理和的\\
替代实现:\\*
\\[10pt]
\makeatletter
\newcommand\gobblestar
{\futurelet\@let@token\@dogobblestar}
\def\@dogobblestar
{\let\next=\relax
\ifx\@let@token*%
\def\next{\@gobble}%
\else\ifx\@let@token[%
\def\next{\@gobbleoptional}%
\fi\fi
\next}
\def\@gobbleoptional[#1]{}
\makeatother
\newcommand\doSingleLine[1]
{\let\normalnewline=\\
\let\\=\gobblestar
#1%
\let\\=\normalnewline}
请注意,不能直接使用,\@ifstar
因为它会占用空间\\
。
答案2
把它放进\mbox
\mbox{\myMultiLineText}