如何避免字体尺寸非常小的框的最终垂直粘连

如何避免字体尺寸非常小的框的最终垂直粘连

我想缩放字体大小非常小的方框文本。

问题是,在一定比例下,框会获得一些最终的垂直粘连。如果将文本放入保存框中,则当保存框的深度值为时,问题就开始了0pt。我猜当我的行变得太小时,TeX 会放入一些跳过值,但我不知道如何防止这种影响。

以下 MWE 显示了该问题:

\documentclass{article}

\usepackage{lmodern}

\newlength\myfontdim

\newcommand{\mytest}[1]{%
  \myfontdim=#1%
  \noindent\fboxsep0pt%
  \fbox{\begin{minipage}{1cm}
    \fontsize{\myfontdim}{\dimexpr 1.05\myfontdim}\selectfont
    \parskip 0.15\myfontdim plus 0pt minus 0pt\par
    A\par
    in\par
    Test
  \end{minipage}}
}%


\begin{document}

\mytest{10pt}

\mytest{5pt}

\mytest{1pt}

\mytest{0.5pt}

\end{document}

输出为

在此处输入图片描述

这里,框 1 和 2 几乎与预期一致,并且顶部和底部规则接近字形。

但是,框 3 和 4 有一些最后的胶水,并且底线没有触及“测试”一词。

主要问题是,要改变什么才能使最后的胶水消失?问题似乎与0pt盒子 3 和 4 的深度值有关。

另一个问题是,为什么框中的三行文本彼此之间的相对距离不同。使用所使用的字体大小和 parskip 值,我本来希望文本行之间的(相对)距离大致相同。

答案1

没有最终的粘合。问题是居中的 minipages(和 \parbox)在内部使用 \vcenter,并且它沿数学轴居中 - 这反过来取决于当前字体大小。因此,如果您在 minipage 内部或之前更改字体,则很重要:

\documentclass{article}

\usepackage{lmodern}

\newlength\myfontdim

\newcommand{\mytest}[1]{%
  \myfontdim=#1%
  \noindent\fboxsep0pt%
  $\frac{a}{a}$ x
  \fbox{%
   $\vcenter {\hbox to 1cm {\fontsize{\myfontdim}{\dimexpr 1.05\myfontdim}\selectfont x\hfil}}$}
  \fbox{%
   \fontsize{\myfontdim}{\dimexpr 1.05\myfontdim}\selectfont
   $\vcenter {\hbox to 1cm {x\hfil}}$}
}%


\begin{document}

\mytest{10pt}

\mytest{5pt}

\mytest{1pt}

\mytest{0.5pt}

\end{document}

在此处输入图片描述

答案2

添加[b]minipage

\documentclass{article}

\usepackage{lmodern}

\newlength\myfontdim

\newcommand{\mytest}[1]{%
  \myfontdim=#1%
  \noindent\fboxsep0pt%
  \fbox{\begin{minipage}[b]{1cm}
    \fontsize{\myfontdim}{\dimexpr 1.05\myfontdim}\selectfont
    \parskip 0.15\myfontdim plus 0pt minus 0pt\par
    A\par
    in\par
    Test
  \end{minipage}}
}%


\begin{document}

\mytest{10pt}

\mytest{5pt}

\mytest{1pt}

\mytest{0.5pt}

\end{document}

在此处输入图片描述

或者,根据您想要的 外部行距\fbox,将 放在\fontsize之前minipage(在组内):

\documentclass{article}

\usepackage{lmodern}

\newlength\myfontdim

\newcommand{\mytest}[1]{%
  \myfontdim=#1%
  \noindent\fboxsep0pt%
  \bgroup%
  \fontsize{\myfontdim}{\dimexpr 1.05\myfontdim}\selectfont
  \fbox{\begin{minipage}{1cm}
    \parskip 0.15\myfontdim plus 0pt minus 0pt\par
    A\par
    in\par
    Test
  \end{minipage}}%
  \egroup%
}%


\begin{document}

\mytest{10pt}

\mytest{5pt}

\mytest{1pt}

\mytest{0.5pt}

\end{document}

在此处输入图片描述


如果没有分组,行距就会缩小,但当然,较小的字体大小会在宏之外保留下来。

\documentclass{article}

\usepackage{lmodern}

\newlength\myfontdim

\newcommand{\mytest}[1]{%
  \myfontdim=#1%
  \noindent\fboxsep0pt%
  \fontsize{\myfontdim}{\dimexpr 1.05\myfontdim}\selectfont
  \fbox{\begin{minipage}{1cm}
    \parskip 0.15\myfontdim plus 0pt minus 0pt\par
    A\par
    in\par
    Test
  \end{minipage}}
}%


\begin{document}

\mytest{10pt}

\mytest{5pt}

\mytest{1pt}

\mytest{0.5pt}

\end{document}

在此处输入图片描述

相关内容