设置 \Blindtext 和 \blindtext 的样式(又名带有可选参数的 renewcommand)

设置 \Blindtext 和 \blindtext 的样式(又名带有可选参数的 renewcommand)

我正在使用blindtext包绘制文档的布局,然后将“虚拟”部分与真实文本交换。问题是我想为这些文本块赋予一些样式,以便在视觉上将它们与已经写好的文本区分开来。

我只是用了:

\let\oldbt\blindtext
\renewcommand{\blindtext}[1]{\textcolor{gray}{\oldbt{}}}

一切正常,直到我想添加一些参数或使用\Blindtext,它在内部调用\blindtext参数。

\xparse我找到了几种使用或处理可选参数的可能性\NewDocumentCommand,但没有一种描述性足够强。我仍然盲目地相信使用 标准 一定可以做到这一点\renewcommand。我也相信这对更多人有用,所以我问了新问题。

正确的造型方式是什么blindtext,例如添加gray颜色?

答案1

重新定义带有可选参数的命令时必须小心谨慎;应该\let使用\LetLtxMacro(参见何时使用 \LetLtxMacro?)。

\documentclass{article}
\usepackage{blindtext,letltxmacro,xcolor,xparse}
\usepackage{lipsum}% for simulating real text

\LetLtxMacro{\blindtextblindtext}{\blindtext}
\LetLtxMacro{\blindtextBlindtext}{\Blindtext}

\RenewDocumentCommand{\blindtext}{O{\value{blindtext}}}{%
  \begingroup\color{gray}\blindtextblindtext[#1]\endgroup
}
\RenewDocumentCommand{\Blindtext}{O{\value{blindtext}}O{\value{Blindtext}}}{%
  \begingroup\color{gray}\blindtextBlindtext[#1][#2]\endgroup
}

\begin{document}

\lipsum[1]

\blindtext[3]

\lipsum[3]

\Blindtext[2][3]

\lipsum[4]

\end{document}

相关内容