引入颜色作为分隔符

引入颜色作为分隔符

我很难构建\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只是为了获得较小的图片。

在此处输入图片描述

相关内容