绘制网格线以显示文本的垂直位置

绘制网格线以显示文本的垂直位置

我有需要调整间距的文本多于第一行。我想叠加网格线来显示文本的垂直位置。

下面的 MWE 注释了以下行,是标准输出。红色水平线是\baselineskip从顶部开始的整数倍。

%\def\IncludeDesiredTopSkip{}

在此处输入图片描述

但是,如果我取消注释此行(应用\DesiredTopSkip设置为0pt此处的),我会得到以下结果:

\def\IncludeDesiredTopSkip{}

在此处输入图片描述

请注意,基线现在正好位于该线上。

问题:

我遗漏了什么来解释这两种情况下的差异,我该如何得到两个都情况下是否能正确显示基线?

笔记:

  • 如果有人好奇我为什么要这样做:然后使用这些线\parshape根据这些线与特定形状的相交位置来计算参数。

参考:

代码:

%\def\IncludeDesiredTopSkip{}
\documentclass{article}
\usepackage{showframe}
\usepackage{tikz}

\usepackage[paperwidth=7.0cm]{geometry}

\newcommand*{\DesiredTopSkip}{0pt}

\newcommand*{\ShowTextGuideLines}[1]{%
\begin{tikzpicture}[remember picture, overlay]
    \coordinate (X) at ([
            xshift=1.0in+\hoffset+\oddsidemargin,
            yshift=-1.0in-\voffset-\topmargin-\headheight-\headsep%
        ]current page.north west);
        
    \node [draw=red, fill=yellow] at (X) {X};%% DEBUGGING: Ensure (X) is the correct spot.
    
    \foreach \X in {1, ..., #1} {%
        \draw [thin, red] ([yshift=-\X\baselineskip-\DesiredTopSkip]X) -- ++ (\hsize,0);
    }%
\end{tikzpicture}%
}%

\begin{document}
\ifdefined\IncludeDesiredTopSkip
    %% See comments in https://tex.stackexchange.com/q/7676/4301
    \hbox{}\kern-\topskip%
    \vspace*{\DesiredTopSkip}%
\fi
First line. abcdefghij
\par
Second line. abcdefghij
\ShowTextGuideLines{3}
\end{document}

答案1

这个答案并没有真正回答你明确提出的问题,但我认为它确实完成了你想要做的事情。

lineno包会生成行号并将其放在页边距中。我滥用了这个包,告诉它打印红色水平线而不是数字,这样就得到了想要的效果。

\documentclass{article}

\usepackage{lineno}    %% <- package for numbering lines
%\linenumbers          %% <- turns on line "numbering" globally

\usepackage{xcolor}    %% <- colour support

\newcommand*{\redline}{\color{red}\rule[-.4pt]{\textwidth}{.4pt}}
%% ^^ the optional argument puts the rule just /below/ the baseline.
%% ^^ to centre it on the baseline, change it to -.2pt.
%% ^^ remove the optional argument to place it on top of the baseline
\setmakelinenumbers\redline %% <- draw a horizontal rule instead of numbers

\usepackage{blindtext} %% <- for \blindtext

\begin{document}

\blindtext[1]

\linenumbers

\blindtext[1]

\nolinenumbers

\blindtext[1]

\end{document}

输出

请注意,如果您喜欢这种语法,\linenumbers ... \nolinenumbers您也可以使用。\begin{linenumbers}...\end{linenumbers}

相关内容