在 plainTeX 和 LaTeX 中组合数学符号

在 plainTeX 和 LaTeX 中组合数学符号

在排版数学符号时,我感觉 LaTeX 有时比普通字体效果更好。我的问题是,LaTeX 有什么不同,以及普通字体是否也有简单的解决方法。

我所知道的问题有:

  1. 对于某些字体(例如脚本字体),Plain 不会将重音符号移到右侧。这是加载字体的软件包的问题吗?(顺便说一句,通常\cal没问题,但\script错误。)
  2. 当组合两个重音符号时,plain 会将第一个重音符号向右移动,但不会将第二个重音符号向右移动。

作为演示,比较以下两个结果。我使用 kp 字体,因为它们对数学重音的偏移相当大(我不得不说,这对我来说有点太大了)。

纯代码:

\input kp-fonts

$\tilde x, \bar x, \bar{\tilde x}, \tilde{\bar x}, \tilde{\script C}$

\bye

LaTeX 代码:

\documentclass{article}
\usepackage{amsmath}
\usepackage{kpfonts}
\begin{document}

$\tilde x, \bar x, \bar{\tilde x}, \tilde{\bar x}, \tilde{\mathscr{C}}$

\end{document}

结果:

plainTeX 代码的结果对阵 LaTeX 代码的结果

答案1

我设法想出了第二个问题的解决方案。修改了http://petr.olsak.net/opmac-tricks-e.html#colaccent可以定义

\newmuskip\tmpmudim 
\newdimen\tmpdim

\def\accents#1#2#3{
  {\ifnum\skewchar\textfont1<0 \tmpmudim=0mu \else \calculatemukern {#3}{\char\skewchar\textfont1}\fi 
   \mkern2\tmpmudim #1{\mkern-2\tmpmudim{#2#3}}} 
} 
\def\calculatemukern #1#2{\setbox0=\hbox{\the\textfont1 #1#2}\setbox1=\hbox{\the\textfont1 #1\null#2}% 
  \tmpdim=\wd0 \advance\tmpdim by-\wd1 
  \tmpmudim=\expandafter\ignorept\the\tmpdim mu \tmpmudim=288\tmpmudim 
  \tmpdim=16em \divide\tmpmudim by\expandafter\ignorefracpart\the\tmpdim\relax 
} 
\def\ignorefracpart#1.#2\relax{#1} 
{\lccode`\?=`\p \lccode`\!=`\t  \lowercase{\gdef\ignorept#1?!{#1}}}

那么就足够了

$\accents\bar\tilde x, \accents\tilde\bar x$

以获得正确的结果。

但如果它能以某种方式自动运行就好了。

相关内容