又是局促的风格。工作简单的代码

又是局促的风格。工作简单的代码

不久前,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

在此处输入图片描述

素数看起来比想要的要大,原因很简单:

  1. 在显示样式中,素数为下标样式
  2. 在测试样式中,素数采用下标样式
  3. 在下面标样式中,素数在下面标样式中
  4. 在下标样式中,素数在下标样式中

如果你真的需要下标样式的素数,那么您可以重新定义\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}

在此处输入图片描述

相关内容