如何更改默认支柱参数?

如何更改默认支柱参数?

0.7\baselineskip默认情况下,TeX 会在线条中插入高度和深度分别为和 的支柱0.3\baselineskip。这些是线条的最小高度和深度。

我的问题:有没有办法修改这些\strut行的默认设置?假设我想让每行的最小高度等于\f@baselineskp(单行空间的当前高度)并且最小深度为 0。我不确定这是否是好的排版;我只是在测试它。

我尝试更改默认\strut高度和深度,但没有成功。请参阅我的 MWE:

\documentclass{article}
\makeatletter
%Attempt 1: I attempt to redefine \set@fontsize from the latex2e kernel. This fails to compile.
%\def\set@fontsize#1#2#3{%
%    \@defaultunits\@tempdimb#2pt\relax\@nnil
%    \edef\f@size{\strip@pt\@tempdimb}%
%    \@defaultunits\@tempskipa#3pt\relax\@nnil
%    \edef\f@baselineskip{\the\@tempskipa}%
%    \edef\f@linespread{#1}%
%    \let\baselinestretch\f@linespread
%      \def\size@update{%
%        \baselineskip\f@baselineskip\relax
%        \baselineskip\f@linespread\baselineskip
%        \normalbaselineskip\baselineskip
%        \setbox\strutbox\hbox{%
%          \vrule\@height.7\baselineskip
%                \@depth.3\baselineskip
%                \@width\z@}%
%%        \setbox\strutbox\hbox{%
%%          \vrule\@height\baselineskip
%%                \@depth.0001\baselineskip
%%                \@width\z@}%
%   \ifnum \tracingfonts>\tw@
%      \ifx\f@linespread\@empty
%        \let\reserved@a\@empty
%      \else
%        \def\reserved@a{\f@linespread x}%
%      \fi
%      \@font@info{Changing size to \f@size/\reserved@a
%                \f@baselineskip}%
%      \aftergroup\type@restoreinfo \fi
%        \let\size@update\relax}%
%}
%
%Attempt 2: Doesn't work for some reason.
\setbox\strutbox\hbox{%
    \vrule\@height\f@baselineskip
            \@depth\z@\@width\z@
}
%\maxdepth\z@
\makeatletter
\usepackage{blindtext}
\begin{document}
\Blinddocument
\end{document}

编辑:如果有人觉得有用,我会留下这个问题。我查看了source2e.pdf,特别是ltpara.dtx,并找到了以下解决方案:

只需在每个段落的开头添加一个支柱,以确保其具有最小高度。例如,\AddToHook{para/begin}{\rule{\z@}{\f@baselineskip}}将最小高度设置为等于当前行高,\AddToHook{para/begin}{\rule{\z@}{\f@size\p@}}将最小高度设置为等于当前字体大小。

答案1

我已经通过在每个段落开头添加钩子来回答我的问题。

这可确保每行都有最小高度。例如,\AddToHook{para/begin}{\rule{\z@}{\f@baselineskip}}设置最小高度等于当前行高,并\AddToHook{para/begin}{\rule{\z@}{\f@size\p@}}设置最小高度等于当前字体大小。如果段落触及页面顶部,则更改值\topskip以确保该行与其他行具有相同的最小高度。

相关内容