调整定制的直立希腊字母在下标中的使用情况

调整定制的直立希腊字母在下标中的使用情况

我真的很喜欢史蒂文产生直立希腊字母在他的回答中:

\documentclass[a4paper]{article}
\newsavebox{\foobox}
\newcommand{\slantbox}[2][0]{\mbox{%
        \sbox{\foobox}{#2}%
        \hskip\wd\foobox
        \pdfsave
        \pdfsetmatrix{1 0 #1 1}%
        \llap{\usebox{\foobox}}%
        \pdfrestore
}}
\newcommand\unslant[2][-.25]{\slantbox[#1]{$#2$}}

\newcommand\ualpha{\unslant\alpha}
\newcommand\ubeta{\unslant\beta}
\newcommand\ugamma{\unslant\gamma}

\begin{document}
$\alpha\beta\gamma$ \par
$\ualpha\ubeta\ugamma$ \par

$X_{\alpha\beta 123}$ \par
$X_{\ualpha\ubeta 123}$ \par
\end{document}

然而,当涉及到下标时,它看起来就不正确:

在此处输入图片描述

特别是字母和数字之间的间隙看起来很糟糕,而且太大了。

我尝试过

\newcommand\unslant[2][-.25]{\slantbox[#1]{$#2\!$}}

但现在它在普通文本中显示得很糟糕:

在此处输入图片描述

有什么解决方案可以让它工作吗?或者我需要为下标和正常情况定义单独的命令吗?

我想避免返回像这样的包upgreek,因为它不适合很多字体。但我没有遇到这些问题。


拆分定义是可行的,虽然不完美,但可以接受:

\newcommand\ualpha{\unslant\alpha}
\newcommand\ubeta{\unslant\beta}
\newcommand\ugamma{\unslant\gamma}
\newcommand\sualpha{\scriptsize\unslant\alpha\kern-0.075em}
\newcommand\subeta{\scriptsize\unslant\beta\kern-0.07em}
\newcommand\sugamma{\scriptsize\unslant\gamma\kern-0.07em}

\begin{document}
$\alpha\beta\gamma$ \par
$\ualpha\ubeta\ugamma$ \par

$X_{\alpha\beta 123}$ \par
$X_{\sualpha\subeta 123}$ \par
\end{document}

在此处输入图片描述

但这真的有必要吗?

答案1

我对您的 MWE 做了两项调整

  1. 我在每个字符周围做了一个小的\mkern减号,\mkern以便更好地与倾斜的对应字符对齐;并且

  2. 更重要的是,我使用包\ThisStyle{...\SavedStyle...}的语法scalerel来保留参数的数学风格。

这是 MWE。

\documentclass[a4paper]{article}
\usepackage{scalerel}
\newsavebox{\foobox}
\newcommand{\slantbox}[2][0]{\mbox{%
        \sbox{\foobox}{#2}%
        \hskip\wd\foobox
        \pdfsave
        \pdfsetmatrix{1 0 #1 1}%
        \llap{\usebox{\foobox}}%
        \pdfrestore
}}
\newcommand\unslant[2][-.25]{%
  \mkern1mu%
  \ThisStyle{\slantbox[#1]{$\SavedStyle#2$}}%
  \mkern-1mu%
}

\newcommand\ualpha{\unslant\alpha}
\newcommand\ubeta{\unslant\beta}
\newcommand\ugamma{\unslant\gamma}

\begin{document}
$\alpha\beta\gamma$ \par
$\ualpha\ubeta\ugamma$ \par

$X_{\alpha\beta 123}$ \par
$X_{\ualpha\ubeta 123}$ \par
\end{document}

在此处输入图片描述

答案2

问题在于 \unslant 将非倾斜字符放在倾斜版本原本需要的空间的右边缘。以下变体将非跨度字符置于相同空间的中心。

\documentclass{article}
\usepackage{mathtools}

\newsavebox{\foobox}
\newlength{\foodim}
\newcommand{\slantbox}[2][0]{\mbox{%
        \sbox{\foobox}{#2}%
        \foodim=#1\wd\foobox
        \hskip \wd\foobox
        \hskip -0.5\foodim
        \pdfsave
        \pdfsetmatrix{1 0 #1 1}%
        \llap{\usebox{\foobox}}%
        \pdfrestore
        \hskip 0.5\foodim
}}
\newcommand\unslant[2][-.25]{\slantbox[#1]{$#2$}}

\let\oldalpha=\alpha
\def\alpha{\unslant{\oldalpha}}
\let\oldbeta=\beta
\def\beta{\unslant{\oldbeta}}
\let\oldgamma=\gamma
\def\gamma{\unslant{\oldgamma}}

\begin{document}
$\alpha\beta\gamma$ \par

$X_{\alpha\beta 123}$ \par
\end{document}

无岛希腊语

相关内容