将框架框拉伸至整个页面

将框架框拉伸至整个页面

有人知道如何将(框架)框拉伸至页面末尾吗?实际上就像

\documentclass{scrartcl}

\begin{document}
sometext

\framebox[\textwidth]{somemoretext\vspace*{\fill}}
\end{document}

当然,这只是行不通的,因为它\fill在盒子里面不起作用……

我也尝试过该framed软件包,但也不能解决问题。

(如果有人想知道我为什么要这样做,想象一下最后有一个用于手写评论的框的讲义......)

答案1

运行它xelatex

\documentclass{article}
\usepackage{pst-node}
\begin{document}
sometext

\rnode[lt]{A}{somemoretext}

\vfill
~\hfill\rnode[rb]{B}{~}
\psframe(A)(B)

\clearpage
foo
\end{document}

在此处输入图片描述

答案2

偶然发现如何定义图形大小以使其占据页面的剩余部分?,我学会了一个更简单的答案来解决这个问题,避免使用像 TikZ 或 pstricks 这样的“大型机器”:页面上剩余的空间可以用图元\pagegoal和来计算\pagetotal。因此

\def\restofpage{\dimexpr\pagegoal-\pagetotal-\baselineskip\relax}

是页面剩余部分的高度。因此,

\documentclass[paper=a8]{scrartcl}

\def\restofpage{\dimexpr\pagegoal-\pagetotal-\baselineskip\relax}

\begin{document}
sometext

\medskip

\framebox[\textwidth]{\parbox{\textwidth}{somemoretext\par\vspace{\restofpage}}}
\end{document}

产生所需的输出:

已编译文档的裁剪

请注意,\framebox将其参数放在\hbox(参见例如这个答案) 因此\parbox实际上是必要的。

答案3

更新 2011/09/16

Herbert 的方法是正确的,他使用了两个节点和 v/hfill。下面是我的 TikZ 解决方案,基于这个想法:

\documentclass{scrartcl}
\usepackage{capt-of}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}


\begin{document}
\lipsum[1]% dummy text

\par\noindent
\tikz[overlay,remember picture]\coordinate (image-start);
\par
\vfill
\null\hfill
\tikz [overlay,remember picture] \draw (0,0) rectangle ([yshift=\ht\strutbox-\fboxsep]image-start);
\newpage
\end{document}

您可以使用 TikZ 来实现这一点。有一个特殊节点current page,它将当前页面的角作为指南针的点。您可以通过减去边距来获得文本区域的右下角。这需要图片上的remember pictureoverlay选项,还需要运行两次编译器才能产生正确的结果。

不幸的是,TikZ 没有为文本区域本身提供特殊节点,但我发现Sven Köhler 发布的一些代码定义了这样一个节点。

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{lipsum}

\newcommand{\currentsidemargin}{%
  \ifodd\value{page}%
    \oddsidemargin%
  \else%
    \evensidemargin%
  \fi%
}

\begin{document}
\lipsum[1]% dummy text
\par\bigskip \noindent
Notes:\\
\begin{tikzpicture}[overlay,remember picture]
    % Helper nodes
    \path (current page.north west) ++(\hoffset, -\voffset)
        node[anchor=north west, shape=rectangle, inner sep=0, minimum width=\paperwidth, minimum height=\paperheight]
        (pagearea) {};

    \path (pagearea.north west) ++(1in+\currentsidemargin,-1in-\topmargin-\headheight-\headsep)
        node[anchor=north west, shape=rectangle, inner sep=0, minimum width=\textwidth, minimum height=\textheight]
        (textarea) {};

    % Framebox
    \draw (0,0) rectangle (textarea.south east);

\end{tikzpicture}
\newpage
\end{document}

结果

答案4

还有一种tcolorbox解决方案(tikz在后台使用):

\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage[breakable]{tcolorbox}

\newtcolorbox{stretchbox}[1][]{
  height fill,
  sharp corners,
  colback=yellow!10!white,
  colframe=yellow!50!black,
  #1}

\begin{document}
\lipsum[1]

\begin{stretchbox}
\lipsum[2]
\end{stretchbox}

\end{document}

在此处输入图片描述

相关内容