文本区域中每 n 个点的规则

文本区域中每 n 个点的规则

我目前正在开发一种新布局。这必须在网格上排版,并且每行都从文本区域顶部 13bp 的倍数开始。为了帮助我检查,我希望从该区域的顶部开始每 13bp 设置一条规则在每一页上都不会干扰排版文本。这和我之前的问题类似帮助生成布局的软件包?背景中的方格纸?我问的是网格,但与该问题不同的是,网格应该从文本区域的顶部(左侧)开始,而不是页面。

据我所知,eso-pic 解决方案在这里不可行。我还能做什么?

(我在 Mac 和 Windows 上使用 PDFTeX)

在此处输入图片描述

答案1

以下解决方案独立于输出例程并使用eso-pic类似的方法:

\documentclass[11pt]{article}
\usepackage{lipsum}
% \usepackage[showframe]{geometry}

\usepackage{atbegshi,picture}
\makeatletter
\AtBeginShipout{%
  \AtBeginShipoutUpperLeft{%
    \put(\dimexpr
      \ifodd\value{page}\oddsidemargin\else\evensidemargin\fi + 1in\relax,
      -\dimexpr\topmargin + 1in + \headheight + \headsep\relax){%
      \begin{picture}(0,0)%
        \setlength{\unitlength}{13bp}%
        \setlength{\dimen0 }{0pt}%
        \@whiledim\dimen0<\dimexpr\textheight+1sp\relax\do{%
          \put(0,-\dimen0){\line(1,0){\textwidth}}%
          \addtolength{\dimen0 }{\unitlength}%
        }%
      \end{picture}%
    }%
  }%
}
\makeatother

\makeatletter
\setlength{\topskip}{13bp}
\renewcommand\normalsize{%
   % \baselineskip to 13bp for \normalsize
   \@setfontsize\normalsize\@xipt{13bp}%
   % the following values are taken from size11.clo.
   \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI
}
% \parskip without glue:
% \setlength{\parskip}{0pt}
% or with positive \parskip:
\usepackage{parskip}
\setlength{\parskip}{13bp}
\makeatother

\begin{document}
\lipsum[1-3]
\end{document}

例子

答案2

类似这样(我还将 baselineskip 和 parskip 更改为网格)

在此处输入图片描述

\documentclass{article}

\makeatletter
\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xpt{13bp}
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI}
\normalsize
\setlength\parskip{13bp}

\def\@oddhead{%
\setlength\unitlength{13bp}
\raisebox{-\topskip}{\begin{picture}(0,0)%
\multiput(0,0)(0,-1){40}{\line(1,0){30}}%
\end{picture}}\hfill}
\makeatother

\def\a{One two three four five. }
\def\b{\a\a Red green blue. \a\a}
\def\c{\b\b Black white. \b\a\b}


\begin{document}

\c

\c

\c

\end{document}

答案3

\rule这些都是简单的线条,也可以用包或类似的东西来完成pict2e

\documentclass{article}
\usepackage{pstricks,multido}

\begin{document}
\setlength\baselineskip{13bp}\noindent%
\multido{\iA=0+13}{45}{\psline[linecolor=gray](0,-\iA bp)(\linewidth,-\iA bp)}%
%
foo\\
bar\\
baz\\
foobar\\
foobarbaz

\end{document}

在此处输入图片描述

和同样\rule

\documentclass{article}
\usepackage{multido}
\begin{document}
\makeatletter%
\newdimen\tempL%
\setlength\baselineskip{13bp}\noindent%
\makebox(0,0)[t]{\multido{\iA=0+13}{40}{%
\put(0,-\strip@pt\tempL){\rule{\linewidth}{0.5pt}}%
\advance\tempL by 13bp}}
\makeatother%
%
foo\\
bar\\
baz\\
foobar\\
foobarbaz

\end{document}

相关内容