我很难构建\celest_separ:n
能够处理颜色的函数,因为代码级函数没有可选参数。真不幸。我该如何摆脱这样的问题?
-
使用versus有什么优势\textemdash
?
\documentclass[a4paper,12pt]{article}
\usepackage{xcolor}
\ExplSyntaxOn
\definecolor{dblue}{RGB}{0,0,139}
\colorlet{celestk}{dblue}
\cs_set_eq:NN \wvAstr \textasteriskcentered
\cs_set_eq:NN \wvDash \textemdash
\cs_new_protected:Nn \celest_separ:n
{
\IfNoValueTF {#2}
{ \color[#1] }
{ \color[#1]{#2} }
\begin{center}
\wvDash \wvDash \wvDash
\ \wvAstr \, \wvAstr \, \wvAstr
\ \wvDash \wvDash \wvDash
\end{center}
}
\NewDocumentCommand \separ {O{celestk}o}
{
\IfNoValueTF {#2}
{ \celest_separ:n [#1] }
{ \celest_separ:n [#1] [#2] }
}
\ExplSyntaxOff
\begin{document}
\separ
\end{document}
答案1
你不能打电话
\celest_separ:n [#1]
也不
\celest_separ:n [#1][#2]
您需要吸收参数并调用具有正确签名(和定义)的内部函数。
但在这里我看不出它能expl3
有什么真正的帮助。
你似乎想允许这样的调用
\separ
\separ[red!80]
\separ[rgb][0.1,0.2,0.3]
事实上,我认为center
环境并不适合这份工作。不要想太多expl3
。
\documentclass[twocolumn]{article}
\usepackage{xcolor}
\usepackage{lipsum}
\definecolor{dblue}{RGB}{0,0,139}
\colorlet{celestk}{dblue}
\NewDocumentCommand{\separ}{O{celestk}o}{%
\par\nopagebreak\vspace{0.5\baselineskip}
\noindent\makebox[\columnwidth]{%
\IfNoValueTF{#2}{\color{#1}}{\color[#1]{#2}}%
---\!---\!---\ %
\textasteriskcentered\,\textasteriskcentered\,\textasteriskcentered
\ ---\!---\!---%
}\par\vspace{0.5\baselineskip}
}
\begin{document}
\lipsum[1][1-2]
\separ
\lipsum[1][1-2]
\separ[red!80]
\lipsum[1][1-2]
\separ[rgb][0.4,0.1,0.1]
\lipsum[1][1-2]
\end{document}
这里twocolumn
只是为了获得较小的图片。