我需要以特定距离(以毫米为单位)绘制线条。例如:
---- 第 0 行 ---- 线 1 位于线 0 下方 35.64 毫米处 ---- 线 2 位于线 1 下方 33.64 毫米处
我使用的宏如下(我不记得从哪里复制来的):
\def\fr#1{
\vbox{
\dimen0=#1
%\advance \dimen0 by -2.41pt
\advance \dimen0 by -1pt
\vskip \dimen0
\vrule height 0.5pt depth 0.5pt width 2in
}
}
我的使用方法如下:
\parindent=0pt
\baselineskip=-\maxdimen
\lineskiplimit=\maxdimen
\lineskip=0pt
\#0 \fr{1mm}
\#1 \fr{35.64}
\#2 \fr{33.64}
但是我无法让线条出现在所需的位置。
答案1
这应该只是个问题\vrule
。\vskip
以下方法应该有效:
\def\fr#1#2{\vskip #2\noindent\smash{#1}%
\vrule height 0.4pt depth 0pt width 2in\relax}
\fr{0}{0mm}
\fr{1}{35.64mm}
\fr{2}{33.64mm}
\bye
请注意如何\smash
使用宏来防止数字增加任何高度或深度。
答案2
一个简单的解决方案(受Andrey的启发):
\def\fr#1#2{\vskip #2\smash{#1 \vrule height 0.4pt depth 0pt width 2in}}
\offinterlineskip
% A ruler in the margin to show alignment
\llap{\smash{\vtop to 100pt{
\leaders\vbox to 20pt{\leaders\vrule\vfill\hrule width 2mm}\vfill}}}
\fr{0}{20pt}
\fr{y}{40pt}
\fr{2}{20pt}
\bye