盒子和粘合系统似乎是 TeX 的优点和缺点。我经常要处理的一个主要问题是线条之间的距离不均匀,如下例所示。
在数学符号周围插入一些\smash
命令证明这个额外的行间距根本没有必要;标准高度的行上有足够的空间容纳数学符号:
目前,插入\smash
我发现手动插入命令是解决此问题的唯一可接受的解决方案,因为我怀疑弄乱行间粘连不是一个好主意(或者什么?)。我想知道是否有一种自动方法可以实现这一点?我可以阻止 TeX 根据内联数学的大小调整行高吗?
你可能认为:
但是,如果您想在内联数学中放置大型结构(如矩阵),该怎么办?当然您不希望它们与相邻的行发生冲突?
但事实是我绝不将矩阵或类似的大型构造放在内联数学中。在我看来,这些东西完全属于显示数学。
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator\Ad{Ad}
\usepackage{lipsum}
\begin{document}
Consider the map~$\Ad_{g_0^2}$.
La la la la la la la la la la la la la la la la la.
And the algebra~$\widetilde{A}$.
\lipsum[1]
Consider the map~\smash{$\Ad_{g_0^2}$}.
La la la la la la la la la la la la la la la la la.
And the algebra~\smash{$\widetilde{A}$}.
\lipsum[1]
\end{document}
答案1
当我被评论 ping 吸引回到此页面时,我发布了第二个答案,我发现当可以使用更简单的经典 tex 答案时,只有 luatex 答案。
如果您设置,\lineskiplimit=-\maxdimen
那么 tex 将保留基线,而不限制由此引起的重叠量。
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator\Ad{Ad}
\usepackage{lipsum}
\begin{document}
\lineskiplimit=-\maxdimen
Consider the map~$\Ad_{g_0^2}$.
La la la la la la la la la la la la la la la la la.
And the algebra~$\widetilde{A}$.
\lipsum[1]
Consider the map~\smash{$\Ad_{g_0^2}$}.
La la la la la la la la la la la la la la la la la.
And the algebra~\smash{$\widetilde{A}$}.
\lipsum[1]
\end{document}
答案2
这是一个可以做得更强大的 luatex 版本,但在换行之后,它使用回调来设置框的高度和深度,并用固定值替换任何基线跳过或行跳过粘连。(可能它应该保留第一个框的高度和最后一个框的深度,留作练习。)
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator\Ad{Ad}
\directlua{
function fixlines(h,c)
local pd=0
print('code: ' .. type(c) .. ':' .. c)
for n in node.traverse(h) do
%
% smash boxes
if n.id==0 then
n.depth=0
n.height=0
end
%
% lineskip or baselineskip set to 12pt
if n.id==12 and (n.subtype==1 or n.subtype==2) then
n.width=786432 % 12pt in sp
end
end
return h
end
luatexbase.add_to_callback('post_linebreak_filter', fixlines, 'fix line spacing')
}
\usepackage{lipsum}
\begin{document}
Consider the map~$\Ad_{g_0^2}$.
La la la la la la la la la la la la la la la la la.
And the algebra~$\widetilde{A}$.
\lipsum[1]
Consider the map~\smash{$\Ad_{g_0^2}$}.
La la la la la la la la la la la la la la la la la.
And the algebra~\smash{$\widetilde{A}$}.
\lipsum[1]
\end{document}