如何用expl3正确写出这个标志的代码?

如何用expl3正确写出这个标志的代码?

我正在尝试将一些用 LaTeX2e 编写的徽标代码转换为 expl3 格式。原始版本和我部分转换的版本列在以下 MWE 中:

%! TEX program = xelatex
\documentclass{article}

\usepackage{xcolor,graphicx}

\begin{document}

\Huge

{
    \textcolor{blue!60!cyan}{P}%
    \textcolor{blue!45!cyan}{r}%
    \textcolor{blue!30!cyan}{o}%
    \textcolor{green!70!black}{%
        \vbox{\offinterlineskip
            \ialign{%
                \hfil#\hfil\cr
                \hidewidth\hskip0.15ex\scalebox{0.4}{\rotatebox{-10}{\usefont{U}{zeur}{b}{n}\symbol{"06}}}\hidewidth\cr
                \noalign{\kern0.15ex}
                \j\cr
            }%
        }%
    }%
    \textcolor{red!20!yellow}{L}%
    \textcolor{red!40!yellow}{i}%
    \textcolor{red!60!yellow}{b}%
} (old)

\ExplSyntaxOn

\color_group_begin:
    \color_select:n { blue!60!cyan }   { P }
    \color_select:n { blue!45!cyan }   { r }
    \color_select:n { blue!30!cyan }   { o }
    \color_select:n { green!70!black }
     {
        \vbox:n
        {
            \offinterlineskip
            \ialign{
            \hfil#
            \cr
            \hidewidth
            \skip_horizontal:n { 0.15ex }
            \scalebox { 0.4 }
                { \rotatebox { -10 } { \usefont{U}{zeur}{b}{n} \symbol{"06} } }
            \hidewidth
            \cr
            \noalign { \kern0.15ex }
            \j
            \cr
            }
        }
     }
    \color_select:n { red!20!yellow }  { L }
    \color_select:n { red!40!yellow }  { i }
    \color_select:n { red!60!yellow }  { b }
\color_group_end:

\ (expl3)

\ExplSyntaxOff

\end{document}

然而,我遇到了两个问题:

  1. 我不太理解这段用纯文本编写的代码,它来自@egreg他的回答。为了使其工作,我必须删除后面的,#因为\hfil其中两个会引发错误,并且在 expl3 版本中,我将一些宏更改为与 expl3 等效的宏。但是,我不知道接下来该做什么或如何用 expl3 完全重写这部分。

  2. 可能是我误解了 l3color 的用法,但是如果用 编译 expl3 版本xelatex,颜色就不正确了: 在此处输入图片描述

但它在 pdflatex 或 lualatex 下运行良好。


仅供参考,下面是绘制此标志的包的当前版本:

\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\RequirePackage{l3keys2e}
\ProvidesExplPackage
  {projlib-logo}
  {2022/02/05} {}
  {The ProjLib logo}

\keys_define:nn { projlib-logo }
  {
    , draft   .bool_set:N   = \l__projlib_logo_draft_bool
    , draft   .initial:n    = { false }
    , fast    .bool_set:N   = \l__projlib_logo_fast_bool
    , fast    .initial:n    = { false }
    , unknown .code:n       = {}
  }
\ProcessKeysOptions { projlib-logo }

\bool_if:NT \l__projlib_logo_draft_bool
  {
    \bool_set_true:N \l__projlib_logo_fast_bool
  }

\bool_if:NT \l__projlib_logo_fast_bool
  {
    \DeclareRobustCommand * \ProjLib
      {
        \group_begin:
          \normalfont ProjLib
        \group_end:
      }
    \endinput
  }

\cs_if_exist:NTF \fontspec
  {
    \newfontface \__projlib_logo_font: { LinBiolinum_R.otf }
  }
  {
    \RequirePackage [T1] { fontenc }
    \cs_gset:Nn \__projlib_logo_font:
      { \fontfamily { LinuxBiolinumT-TLF } \selectfont }
  }

\tl_new:N   \__projlib_logo_sigma_j_tl
\tl_gset:Nn \__projlib_logo_sigma_j_tl
  {
    \vbox:n
      {
        \offinterlineskip
        \hbox_overlap_center:n
          {
            \skip_horizontal:n { 0.75ex }
            \hbox_set:Nn    \l_tmpa_box { \usefont{U}{zeur}{b}{n} \symbol{"06} }
            \box_rotate:Nn  \l_tmpa_box { -10 }
            \box_scale:Nnn  \l_tmpa_box {.4} {.4}
            \box_use:N      \l_tmpa_box
          }
        \skip_vertical:n { 0.15ex }
        \hbox:n { \j }
      }
  }

\cs_new_protected:Nn \projlib_logo_generic:n
  {
    \group_begin:
      \normalfont
      \__projlib_logo_font:
      \color_group_begin:
        \color_select:n { blue!60!cyan }   { P }
        \color_select:n { blue!45!cyan }   { r }
        \color_select:n { blue!30!cyan }   { o }
        \color_select:n { green!70!black } { #1 }
        \color_select:n { red!20!yellow }  { L }
        \color_select:n { red!40!yellow }  { i }
        \color_select:n { red!60!yellow }  { b }
      \color_group_end:
    \group_end:
  }

\DeclareRobustCommand * \ProjLib
  {
    \projlib_logo_generic:n { \__projlib_logo_sigma_j_tl }
  }
\DeclareRobustCommand * \ProjLibText
  {
    \projlib_logo_generic:n { j }
  }

\endinput
%%
%% End of file `projlib-logo.sty'.

相关内容