我正在创建一个文档,我想在其中留下不同高度的空白,例如用于手写问题的答案。
该空白空间是否有边界并不重要。
关键是它需要跨页,所以如果我要求高度为 6 英寸的空间,但是页面上只剩下 3 英寸,那么我会在第一页得到 3 英寸,在下一页得到 3 英寸。
例如我看到有人使用这个代码这里
\def\boxpar[#1]#2#3{{\setlength{\fboxsep}{-\fboxrule}\fbox{\parbox[][#2][t]{#1}{\mbox{}\\[-.125\baselineskip]\mbox{}~#3}}}}
\boxpar[\hsize]{6in}{}
这将创建一个 6 英寸高且宽度与页面宽度相同的边框,但如果第一页上没有足够的空间,它会将整个内容移动到下一页。
答案1
只需制作不会消失的段落即可。为了指定任何维度,只需制作多个段落即可。
\documentclass{article}
\usepackage{lipsum}
\newcommand{\answerspace}[2][n]{%
\par\smallskip
\begingroup
\if#1r\hrule\fi
\baselineskip=\dimexpr#2/100\relax
\lineskip=0pt \parindent=0pt
\count255=0
\loop\ifnum\count255<100
\advance\count255 by 1
\leavevmode\vbox to\baselineskip{}
\if#1r\vrule\hfill\vrule\fi\endgraf
\repeat
\if#1r\hrule\fi
\smallskip
\endgroup
}
\begin{document}
\lipsum[1]
\answerspace[r]{2in}
\lipsum[2]
\answerspace{6in}
\lipsum[3]
\end{document}
制定\answerspace[r]{<length>}
了规则。
答案2
让我们尝试使用包来回答这个问题mdframed
. (Github 版本:https://github.com/marcodaniel/mdframed-- 较新)
提供的命令\boxpar
具有以下语法:
\boxpar[<number of lines>]{Text}[<width of the box>]
数量和宽度可选。
mdframed
可以t split across pages using a simple
\vspace`。因此需要循环。
\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{lipsum}
\newcounter{tempcount}
\NewDocumentCommand \boxpar { O{3} m O{\linewidth} }{%
\begin{mdframed}[align=center,innertopmargin=.4cm,userdefinedwidth=#3]
\setcounter{tempcount}{0}
\loop\ifnum\value{tempcount}<#1
\rule{0pt}{\baselineskip}\\[2pt]
\stepcounter{tempcount}
\repeat
\ifx\relax#2\relax\else#2\fi
\end{mdframed}%
}
\begin{document}
\lipsum[1]
\boxpar{}
\lipsum[2]
\boxpar[10]{}[8cm]
\boxpar[6]{3 Points}[8cm]
\end{document}
如果你想修改框架的样式,你可以通过以下选项来实现mdframed
\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}
\mdfdefinestyle{boxpar}{linewidth=2pt,backgroundcolor=gray!10,roundcorner=10pt,}
\usepackage{lipsum}
\newcounter{tempcount}
\NewDocumentCommand \boxpar { O{3} m O{\linewidth} }{%
\begin{mdframed}[align=center,innertopmargin=.4cm,userdefinedwidth=#3,style=boxpar]
\setcounter{tempcount}{0}
\loop\ifnum\value{tempcount}<#1
\rule{0pt}{\baselineskip}\\[2pt]
\stepcounter{tempcount}
\repeat
\ifx\relax#2\relax\else#2\fi
\end{mdframed}%
}
\begin{document}
\lipsum[1]
\boxpar{}
\lipsum[2]
\boxpar[10]{}[8cm]
\boxpar[6]{3 Points}[8cm]
\end{document}
如果您想要水平线,您可以使用:
\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}
\mdfdefinestyle{boxpar}{linewidth=2pt,backgroundcolor=gray!10,roundcorner=10pt,}
\usepackage{lipsum}
\newcounter{tempcount}
\NewDocumentCommand \boxpar { O{3} m O{\linewidth} }{%
\begin{mdframed}[align=center,innertopmargin=.4cm,userdefinedwidth=#3,style=boxpar]
\setcounter{tempcount}{1}
\loop\ifnum\value{tempcount}<\numexpr#1+1\relax
% \rule{0pt}{\baselineskip}\\[2pt]
\the\value{tempcount}\rule{\linewidth}{.8pt}\\[2pt]
\stepcounter{tempcount}
\repeat
\ifx\relax#2\relax\else#2\fi
\end{mdframed}%
}
\begin{document}
\lipsum[1]
\boxpar{}
\lipsum[2]
\boxpar[10]{}[8cm]
\boxpar[6]{3 Points}[8cm]
\end{document}
您还可以添加标题:
\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}
\mdfdefinestyle{boxpar}{linewidth=2pt,backgroundcolor=gray!10,roundcorner=10pt,frametitle=Room for your answer,frametitlerule=true}
\usepackage{lipsum}
\newcounter{tempcount}
\NewDocumentCommand \boxpar { O{3} m O{\linewidth} }{%
\begin{mdframed}[align=center,innertopmargin=.4cm,userdefinedwidth=#3,style=boxpar]
\setcounter{tempcount}{0}
\loop\ifnum\value{tempcount}<#1
\rule{0pt}{\baselineskip}\\[2pt]
\stepcounter{tempcount}
\repeat
\ifx\relax#2\relax\else#2\fi
\end{mdframed}%
}
\begin{document}
\lipsum[1]
\boxpar{}
\lipsum[2]
\boxpar[5]{}[8cm]
\boxpar[6]{3 Points}[8cm]
\end{document}
答案3
\vrule\strut\hfill\vrule
如果您不想要两侧的线条,请将其删除。
\documentclass{article}
\def\blanklines#1{%
\ifnum#1>0
\par\noindent\mbox{}\vrule\strut\hfill\vrule\par%
\expandafter\blanklines\expandafter{%
\the\numexpr#1-1\expandafter\relax\expandafter}%
\fi
}
\begin{document}
stuff
more stuff\par more stuff\par more stuff\par more stuff\par more stuff\par
\blanklines{16}
more stuff\par more stuff\par more stuff\par more stuff\par more stuff\par
\blanklines{25}
more stuff\par more stuff\par more stuff\par more stuff\par more stuff\par
\end{document}