![又是局促的风格。工作简单的代码](https://linux22.com/image/279138/%E5%8F%88%E6%98%AF%E5%B1%80%E4%BF%83%E7%9A%84%E9%A3%8E%E6%A0%BC%E3%80%82%E5%B7%A5%E4%BD%9C%E7%AE%80%E5%8D%95%E7%9A%84%E4%BB%A3%E7%A0%81.png)
不久前,Taco Hoekwater 提出了一种获得数学表达式的紧凑风格的方法。
\newdimen\savedrulethickness
\def\docramped#1#2{
\savedrulethickness=\fontdimen8\textfont3
\hbox{$\fontdimen8\textfont3=0pt#1\overline{#2}$}
\fontdimen8\textfont3\savedrulethickness
}
\def\cramped{\mathpalette\docramped}
效果很好
$$
x' \cramped{a'}
$$
因此 中的 primea'
位置比常规情况下的位置略低x'
。但是这里有一个错误。宏不适用于\scriptscriptstyle
:
$$
\scriptscriptstyle
x' \cramped{a'}
$$
符号上方显示了过多的条形图(\textstyle
处理得很好)。我发现代码很有用,所以我想知道有人能修复这个错误并向我解释一下 中的第一个#1
和第二个#2
参数的\docramped
作用是什么?它们的含义是什么?此外,我不想使用一些外部包来实现这些目的,因为上面的代码很优雅而且非常简单。在此先谢谢了。
答案1
有mathtools
一个\cramped
使用不同方法的宏(使用“幻影部首”)。结果与 Taco 的结果非常相似,无需对 进行任何重新赋值\fontdimen
。
我将使用 Plain TeX 并排显示这两种方法;左边是mathtools
方法。
\def\cramped#1{%
\kern-\nulldelimiterspace\radical0{#1}
}
\newdimen\savedrulethickness
\def\docramped#1#2{
\savedrulethickness=\fontdimen8\textfont3
\hbox{$\fontdimen8\textfont3=0pt#1\overline{#2}$}
\fontdimen8\textfont3\savedrulethickness
}
\def\tacocramped{\mathpalette\docramped}
\noindent\vbox{\hsize=.1\hsize
$$
\eqalign{
x'x'\cr
x'\cramped{x'}\cr
\scriptscriptstyle
x'x'\cr
\scriptscriptstyle
x' \cramped{x'}
}
$$
}%
\vbox{\hsize=.1\hsize
$$
\eqalign{
x'x'\cr
x'\tacocramped{x'}\cr
\scriptscriptstyle
x'x'\cr
\scriptscriptstyle
x' \tacocramped{x'}
}
$$
}
\bye
素数看起来比想要的要大,原因很简单:
- 在显示样式中,素数为下标样式
- 在测试样式中,素数采用下标样式
- 在下面标样式中,素数在下面标样式中
- 在下标样式中,素数在下标样式中
如果你真的需要下标样式的素数,那么您可以重新定义\prime
;此代码依赖于\text
,因此有必要使用 LaTeX:
\documentclass{article}
\usepackage{amsmath}
\AtBeginDocument{%
\edef\primecode{\mathchar\number\prime\space}%
\def\prime{{\text{$\primecode$}}}%
}
\begin{document}
$f^{\primecode\primecode}$
$f''$
$f'\scriptstyle f'\scriptscriptstyle f'$
\end{document}