将段落与基线网格对齐的简单方法

将段落与基线网格对齐的简单方法

想法是在开始多列之后立即保存垂直位置,然后每当需要将文本段落与基线网格行对齐时,从该位置计算下一个合适的位置。

问题问题是,在调整了值(pt 和 sp)之后,我不知怎么地无法实现我想要的效果。似乎仅仅调整网格行高长度和其他值(字体大小、行距和 parskip),以便两侧的段落能够完全与基线网格对齐;垂直空间会添加到某些位置,但它们的高度并不完全是应该的。

我认为问题与位置值有关。我感觉我这里漏掉了一些东西,但目前我不确定是什么。

\documentclass[11pt]{article}
\usepackage{geometry}
\usepackage{parskip}
\usepackage{setspace}
\usepackage{intcalc}
\usepackage{zref-savepos}
\usepackage[colaction]{multicol}
\geometry{a4paper}
\geometry{portrait}
\geometry{top=2cm,right=2cm,bottom=2cm,left=2cm}

\setlength{\parindent}{1cm}
\setlength{\parskip}{0pt}

\newlength\textstartypos
\newlength\vspacedistance
%\newlength\tempval

\newcommand{\settextstartypos}[1]{
\zsavepos{#1}
\setlength\textstartypos{\the\dimexpr\zposy{#1}sp}
%\the\dimexpr\zposy{#1}sp
}

\newlength\gridrowheight
%\addtolength\gridrowheight{40pt}
\addtolength\gridrowheight{1706432sp}

\newcommand{\skiptonextypos}[1] {
\zsavepos{#1}
\setlength\vspacedistance{\textstartypos}
\addtolength\vspacedistance{-\the\dimexpr\zposy{#1}sp}
\setlength\vspacedistance{\intcalcMod{\vspacedistance}{\gridrowheight}sp}
%\setlength\tempval{\intcalcMod{\vspacedistance}{\gridrowheight}sp}
\setlength\vspacedistance{\intcalcSub{\gridrowheight}{\vspacedistance}sp}
\vspace{\vspacedistance}
}

\begin{document}
\begin{spacing}{1.0}
\begin{multicols}{2}
\settextstartypos{textstartypos}
\lipsum[2]

\skiptonextypos{someposition1}
\lipsum[3]

\lipsum[4]

\skiptonextypos{someposition2}
\lipsum[5]

\skiptonextypos{someposition3}
\lipsum[6]
\end{multicols}
\end{spacing}
\end{document}

不太一致

相关内容