隐含符号中有一个凸起

隐含符号中有一个凸起

编辑: 我知道这个问题已被标记为重复,但我链接到的问题对我来说没有解决方案(除非我遗漏了一些明显的东西,这很可能)。打印在纸上时效果非常明显。有人能建议我如何避免这个问题,并且仍然使用拉丁现代字体来处理非数学文本吗?我使用的是 pdfLaTeX。

我在使用暗示字形时遇到了问题。我使用的是拉丁现代字体,12pt 文档。组成箭头的水平线在中间有一个“凸起”。我在尝试弄清楚时发现了类似的问题,但打印后问题仍然存在。

\implies 和 \Longrightarrow 可能存在错误 - 中间有一个点

为了说明,这里有一张图片:

暗示字形

当我使用时,问题基本上消失了\scriptstyle,但我宁愿不这样做。有什么想法吗?

\documentclass[12pt]{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{mathtools} 

\begin{document} 
  $\implies$\par
  $\scriptstyle \implies$   
\end{document}

答案1

问题是这样的:(\Longrigtharrow在其上\implies定义)由来自不同字体的两个字符构建。

加长箭头的等号取自\textfont0(普通文本字体),箭头(\Rightarrow)取自\textfont2(数学符号字体​​)。

当当前字体大小为 10pt 时,lmodern定义\textfont0rm-lmr10(前缀rm表示 OT1 编码) 和\textfont2lmsy10均正确。如果当前字体大小为 11pt,则字体为rm-lmr10 at 10.95ptlmsy10 at 10.95pt,它们再次彼此一致。

问题出在 12pt 上:在这种情况下\textfont0rm-lmr12,而\textfont2lmsy10 at 12pt。问题就出在这里:笔触的粗细按比例缩放,\Rightarrow但没有按比例缩放=,差异很明显,尤其是在低分辨率下。

下面的图像是\mag=4000通过输入编译pdftex以4 倍放大率 ( ) 拍摄的

\mag=4000
\font\xy=lmsy10 at 12pt
\font\xz=rm-lmr12
\textfont2=\xy \textfont0=\xz
$\Longrightarrow$
\bye

在此处输入图片描述

并且差异不能归因于屏幕预览器的像素调整。

一种可能的解决方法是重新定义用于在当前字体大小超过 10pt 时\textfont0使用缩放的字体,并使用 T1 作为文本字体的默认编码。rm-lmr10

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\makeatletter
% Load the OT1 definitions for lmodern
\input{ot1lmr.fd}
% Change the definition for \OT1/lmr/m/n/<size>
\DeclareFontShape{OT1}{lmr}{m}{n}%
  {<-5.5>    rm-lmr5  <5.5-6.5> rm-lmr6
   <6.5-7.5> rm-lmr7  <7.5-8.5> rm-lmr8
   <8.5-9.5> rm-lmr9  <9.5->    rm-lmr10
  }{}
\makeatother

\begin{document}
\noindent
$\Longrightarrow$\\
The text font\\
is \expandafter\texttt\expandafter{\fontname\font}
\end{document}

在此处输入图片描述

答案2

amsmath用于\Longrightarrow获取\Implies符号。\Longrightarrow\Longleftarrow由标准字体组成的符号(除非使用数学字体,其中包含符号的现成字形)。箭头取自\Rightarrow\Leftarrow,等号=用作延长,请参阅宏\Relbar。在较大的字体大小下,线条不太匹配,如问题图像中所示。

一个简单的例子:

\documentclass{article}
\begin{document}
  \Huge$\Longrightarrow$
\end{document}

问题:\Longrightarrow 作为组合符号

以下重新实现\Longrightarrow\Longleftarrow使用不同的方法来获得延长。不使用等号,而是将的左侧部分\Rightarrow用作新宏的左侧部分\NewRelbar,将的右侧部分\Leftarrow用作的右侧部分\Leftbar。等号的宽度太大,无法将延长完整地取出。此外,侧边距被保留,新符号可用于\Longrightarrow\Longleftarrow

实施和测试示例:

\documentclass{article}

% Save original macros
% --------------------
\usepackage{letltxmacro}

\LetLtxMacro\OriginalLongrightarrow\Longrightarrow
\LetLtxMacro\OriginalLongleftarrow\Longleftarrow

% Implement new macros
% --------------------
\usepackage{trimclip}
\DeclareRobustCommand\Longrightarrow{\NewRelbar\joinrel\Rightarrow}
\DeclareRobustCommand\Longleftarrow{\Leftarrow\joinrel\NewRelbar}

\makeatletter
\DeclareRobustCommand\NewRelbar{%
  \mathrel{%
    \mathpalette\@NewRelbar{}%
  }%
}
\newcommand*\@NewRelbar[2]{%
  % #1: math style
  % #2: unused
  \sbox0{$#1=$}%
  \sbox2{$#1\Rightarrow\m@th$}%
  \sbox4{$#1\Leftarrow\m@th$}%
  \clipbox{0pt 0pt \dimexpr(\wd2-.6\wd0) 0pt}{\copy2}%
  \kern-.2\wd0 %
  \clipbox{\dimexpr(\wd4-.6\wd0) 0pt 0pt 0pt}{\copy4}%
}
\makeatother

% Testing
% -------
\usepackage{booktabs}
\usepackage{color}
\begin{document}
  \Huge
  \newcommand*{\Test}[1]{%
    \color{red}%
    $#1\OriginalLongrightarrow\OriginalLongleftarrow$&%
    \color{blue}%
    $#1\Longrightarrow\Longleftarrow$%
  }
  \begin{tabular}{cc}
    \toprule
    Original & New \\
    \midrule
    \Test{}\\
    \Test\scriptstyle\\
    \Test\scriptscriptstyle\\
    \bottomrule
  \end{tabular}
\end{document}

结果

答案3

截至 2020 年,这是几十年前的技术债务之一,你可以通过加载来清除它unicode-math

相关内容