如何更改已经存在的命令,使其使用 0 个参数工作?
例如,\underline{}
和\textbf{}
宏各接受 1 个参数。但是,我希望它们接受 0 个参数,以便我可以在环境中使用它们:
\newenvironment{e}{\textbf\underline}{}
或者像这样:{\textbf Hello this text is BOLD.} And this is not.
我正在考虑定义一个新的宏:
\newcommand{\underlinee}{}
那么我的问题是:我该如何定义这个新的宏?我应该在空白处写什么{}
?
答案1
soul
您可以使用或 来完成ulem
。
\documentclass{article}
\usepackage{xparse}
\usepackage{soul}
\NewDocumentEnvironment{obnoxious}{b}
{\textbf{\ul{#1}}}
{}
\begin{document}
Some text before
\begin{obnoxious}
some text in bold face and underlined. You can't use multiple paragraphs
\end{obnoxious}
and other text follows.
\end{document}
当然,\textbf
最好使用\bfseries
:
\documentclass{article}
\usepackage{xparse}
\usepackage{soul}
\NewDocumentEnvironment{obnoxious}{b}
{\bfseries\ul{#1}}
{}
\begin{document}
Some text before
\begin{obnoxious}
some text in bold face and underlined. You can't use multiple paragraphs
\end{obnoxious}
and other text follows.
\end{document}
因为\textbf{text}
大部分都像{\bfseries text}
(只是简化)。
您可以使用多个段落吗?是的,但还需要一些工作。
\documentclass{article}
\usepackage{xparse}
\usepackage{soul}
\ExplSyntaxOn
\seq_new:N \l__vebjorn_obnoxious_in_seq
\seq_new:N \l__vebjorn_obnoxious_out_seq
\NewDocumentEnvironment{obnoxious}{+b}
{
\seq_set_split:Nnn \l__vebjorn_obnoxious_in_seq { \par } { #1 }
\seq_set_map:NNn \l__vebjorn_obnoxious_out_seq \l__vebjorn_obnoxious_in_seq
{
\exp_not:n { \ul { ##1 } }
}
\bfseries\seq_use:Nn \l__vebjorn_obnoxious_out_seq { \par }
}
{}
\ExplSyntaxOff
\begin{document}
Some text before
\begin{obnoxious}
some text in bold face and underlined.
You can even use multiple paragraphs
\end{obnoxious}
and other text follows.
\end{document}
当然,这只是为了学术兴趣,不是吗?长文本以粗体显示和下划线就像是一拳打在眼睛上。下划线本身在精细排版中不被认为是一种好的设计。
因此,我不会展示结果的图像。