仅为文本区域着色

仅为文本区域着色

我使用几何包来定义(一页)文档的纸张尺寸和文本区域:

\usepackage[
  paperwidth=420mm,
  paperheight=297mm,
  text={365mm,270mm},
  centering
]{geometry}

我希望为指定的文本区域设置背景颜色。我用的是这个。

\usepackage{color}
\pagecolor{magenta}

但是,这会为整张纸(420*297 平方毫米)着色,而不仅仅是文本区域(365*270 平方毫米)。

我该如何上色仅有的文本区域?

答案1

您可以使用tikzpagenodes包裹:

\documentclass{article}
\usepackage{tikzpagenodes}
\usepackage{lipsum}
\usepackage{showframe}

\newcommand\ColorTextArea{%
\begin{tikzpicture}[remember picture,overlay]
\fill[cyan!20] 
  (current page text area.north west) rectangle (current page text area.south east);
\end{tikzpicture}%
}
\begin{document}
\ColorTextArea
\lipsum[1-3]

\end{document}

在此处输入图片描述

showframe包仅用于提供一些用于页面布局的框架来帮助可视化。

\ColorTextArea仅影响调用它的页面。如果希望所有页面均受影响,请使用以下atbegshi包:

\documentclass{article}
\usepackage{tikzpagenodes}
\usepackage{lipsum}
\usepackage{atbegshi}
\usepackage{showframe}

\newcommand\ColorTextArea{%
\begin{tikzpicture}[remember picture,overlay]
\fill[cyan!20] 
  (current page text area.north west) rectangle (current page text area.south east);
\end{tikzpicture}%
}

\AtBeginShipout{\ColorTextArea}
\AtBeginShipoutFirst{\ColorTextArea}

\begin{document}
\lipsum[1-40]

\end{document}

答案2

这样,每一页都会自动完成。

\documentclass{article}
\usepackage{everypage}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{calc}
\AddEverypageHook{\color{blue!20}\smash{\hspace{\oddsidemargin}%
  \rule[-\textheight-\headsep-\headheight-\topmargin]{\textwidth}{\textheight}}}
\begin{document}
\lipsum[1-7]
\end{document}

谢谢“Killmargins” 包?用于文本测量的图像。

在此处输入图片描述

相关内容