我想缩放字体大小非常小的方框文本。
问题是,在一定比例下,框会获得一些最终的垂直粘连。如果将文本放入保存框中,则当保存框的深度值为时,问题就开始了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}