我目前正在开发一种新布局。这必须在网格上排版,并且每行都从文本区域顶部 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}