如何使自定义命令在换行/新段落后工作?

如何使自定义命令在换行/新段落后工作?

我有一个简单的命令,可以创建彩色文本。当只有一个段落没有换行符时,此命令可以正常工作。如果有换行符/新段落,则此命令不起作用(下面 MWE 中的注释代码会产生这种情况)。给出的错误是

Too many }'s.
\tbn #1->\textcolor {blue}{{#1} }

一种简单的方法是对换行后的每个段落分别使用\tbn{}。但是是否可以重新定义该命令,使其跨段落/换行起作用?

\documentclass{article}
\usepackage{xcolor}

\newcommand{\tbn}[1]{\textcolor{blue}{{#1}}}

\usepackage{lipsum}

\begin{document}

\tbn{This works if there is no line break.}

% \tbn{This doesn't work if there is a line break.

% If there is a line break.}

\end{document}

答案1

\textcolor不接受参数中的段落(就像所有其他\text...命令一样\textbf)。而是使用显式组和\color

\documentclass{article}

\usepackage{xcolor}

\newcommand{\tbn}[1]{\leavevmode{\color{blue}#1}}

\begin{document}
\tbn{This works if there is no line break.}

\tbn{This doesn't work if there is a line break.

If there is a line break.}
\end{document}

相关内容