考虑以下代码:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{calrsfs}
\DeclareMathAlphabet{\pazocal}{OMS}{zplm}{m}{n}
\SetMathAlphabet\pazocal{bold}{OMS}{zplm}{bx}{n}
\begin{document}
\Huge
\vskip 15pt
$\boldsymbol{\pazocal{EACH DAY}}$ \\
\end{document}
产生
尽管在代码中输入了“EACH DAY”作为文本,但这两个单词并没有分开。我认为这是因为pazocal
某种数学模式字体。
为了自动分隔单词,我尝试过\text
与一起使用\pazocal
,但是这样做时字体消失了(尽管两个单词分开了)。
我知道我可以通过在两个单词之间添加水平空格来强制分隔;但我希望能够自动执行此操作以容纳多个单词。
问题:我如何使用\pazocal
字体,boldsymbol
以便在括号内输入的单个单词pazocal{}
以所需的字体生成单独的单词?
谢谢。
答案1
如果要将该字体用于文本,则必须指定单词间距,因为 OMS 编码字体中的相关参数为零(出于技术原因)。
\documentclass[a4paper,12pt]{article}
\newcommand{\textpazocal}[1]{%
\begingroup
\setlength{\spaceskip}{0.5em plus 0.2em minus 0.1em}%
\usefont{OMS}{zplm}{bx}{n}#1%
\endgroup
}
\begin{document}
\textpazocal{EACH DAY}
\end{document}
最终的输出结果真的很丑陋,不是吗?
如果您坚持使用数学模式……
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\DeclareMathAlphabet{\pazocalalphabet}{OMS}{zplm}{m}{n}
\SetMathAlphabet\pazocalalphabet{bold}{OMS}{zplm}{bx}{n}
\ExplSyntaxOn
\NewDocumentCommand{\pazocal}{m}
{
\seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 }
\pazocalalphabet{\seq_use:Nn \l_tmpa_seq { \ }}
}
\ExplSyntaxOff
\begin{document}
$\pazocal{EACH DAY}$
$\boldsymbol{\pazocal{EACH DAY}}$
\end{document}
你可能想要替换{ \ }
为{\mspace{12mu plus 4mu minus 2mu}}
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\DeclareMathAlphabet{\pazocalalphabet}{OMS}{zplm}{m}{n}
\SetMathAlphabet\pazocalalphabet{bold}{OMS}{zplm}{bx}{n}
\ExplSyntaxOn
\NewDocumentCommand{\pazocal}{m}
{
\seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 }
\pazocalalphabet{\seq_use:Nn \l_tmpa_seq {\mspace{12mu plus 4mu minus 2mu}}}
}
\ExplSyntaxOff
\begin{document}
$\pazocal{EACH DAY}$
$\boldsymbol{\pazocal{EACH DAY}}$
\end{document}
调整间距以适合您的喜好。