我正在尝试将一些用 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}
然而,我遇到了两个问题:
我不太理解这段用纯文本编写的代码,它来自@egreg他的回答。为了使其工作,我必须删除后面的,
#
因为\hfil
其中两个会引发错误,并且在 expl3 版本中,我将一些宏更改为与 expl3 等效的宏。但是,我不知道接下来该做什么或如何用 expl3 完全重写这部分。
但它在 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'.