![调整定制的直立希腊字母在下标中的使用情况](https://linux22.com/image/308824/%E8%B0%83%E6%95%B4%E5%AE%9A%E5%88%B6%E7%9A%84%E7%9B%B4%E7%AB%8B%E5%B8%8C%E8%85%8A%E5%AD%97%E6%AF%8D%E5%9C%A8%E4%B8%8B%E6%A0%87%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5.png)
我真的很喜欢史蒂文产生直立希腊字母在他的回答中:
\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 做了两项调整
我在每个字符周围做了一个小的
\mkern
减号,\mkern
以便更好地与倾斜的对应字符对齐;并且更重要的是,我使用包
\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}