我正在尝试帮助一位朋友将一本阿拉伯语书籍编入 LaTeX 格式,但我面临着这个非常相同的行距不均匀问题(除了这本书完全是阿拉伯语的)。
现在,我正在尝试找到一个\linespread
足够大的设置以确保线距均匀但不会更大,所以我想绘制一个网格并目视检查具有不同设置的线条以找到所需的线条。
但是,我甚至不明白1.5
实际上的\linespread{1.5}
意思(我阅读了许多讨论和答案,但我仍然不明白),所以我需要帮助:
- 设置背景网格(水平线就足够了)。
- 使网格线之间的间距遵循
\linespread
设置,即,如果 TeX 没有执行其垂直粘合魔法,它们应该代表理想的行间距。
(我尝试了grid
选项eso-pic
但无法理解其选项的含义以获得上面所描述的内容)。
答案1
这应该能满足您的要求。在基线处绘制一个由所需数量的线条组成的框,并添加\AtBeginShipout
。
\documentclass{article}
\usepackage{atbegshi,picture,xcolor}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\color{red}%
\put(\dimexpr 1in+\oddsidemargin,
-\dimexpr 1in+\topmargin+\headheight+\headsep+\topskip)%
{%
\vtop to\dimexpr\vsize+\baselineskip{
\hrule
\leaders\vbox to\baselineskip{\hrule width\hsize\vfill}\vfill
}%
}%
}%
}
\linespread{1.5}
\usepackage{kantlipsum}
\begin{document}
\kant
\end{document}
是做什么的\linespread{1.5}
?每次 LaTeX 设置 时\baselineskip
,它都会将正常值乘以该因子。例如,如果正常的 baselineskip 是 12pt,它将变为 18pt;对于\small
,当正常值为 11pt 时,它将变为 16.5pt。但是,\topskip
不会修改。
答案2
使用包bidi-atbegshi
,这甚至变得更加容易(您只需要\AtBeginShipoutUpperLeft
在@egreg 的代码中更改为\AtBeginShipoutUpperRight
:
\documentclass{article}
\usepackage{bidi-atbegshi,picture,xcolor}
\usepackage[RTLdocument]{bidi}
\AtBeginShipout{%
\AtBeginShipoutUpperRight{%
{\color{red}%
\put(\dimexpr 1in+\oddsidemargin,
-\dimexpr 1in+\topmargin+\headheight+\headsep+\topskip)%
{%
\vtop to\dimexpr\vsize+\baselineskip{
\hrule
\leaders\vbox to\baselineskip{\hrule width\hsize\vfill}\vfill
}%
}%
}%
}%
}
\linespread{1.5}
\usepackage{kantlipsum}
\begin{document}
\kant
\end{document}
答案3
对@egreg 的代码稍加改动,它在 RTL 中也能正常工作:
\documentclass{article}
\usepackage{atbegshi,picture,xcolor}
\usepackage[RTLdocument]{bidi}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
{\color{red}%
\put(\dimexpr -1in-\oddsidemargin,
-\dimexpr 1in+\topmargin+\headheight+\headsep+\topskip)%
{%
\vtop to\dimexpr\vsize+\baselineskip{
\hrule
\leaders\vbox to\baselineskip{\hrule width\hsize\vfill}\vfill
}%
}%
}}%
}
\linespread{1.5}
\usepackage{kantlipsum}
\begin{document}
\kant
\end{document}
以下是您得到的: