我正在写一本书,想在所有页面周围放置一个红色的、5pt 粗的框架,但书中间的一页除外,该页包含一个比框架大的图形。
框架应位于文本上边距上方 1cm、下边距下方 1cm 以及左右边距 1.5cm 处;它不应围绕页眉或页脚,页眉和页脚均应位于框架之外。
我正在使用 XeLaTeX,但尚未决定是否要使用回忆录或 KOMA 脚本类来编写本书。这可能取决于这个答案。
答案1
这是自文档化的完整工作代码。当然,您应该设置所需的标题(fancyhdr
包)和页面几何(geometry
包)。该代码强烈依赖于包裹fancyhdr
和保持中心头部空着!
\documentclass{article}
\usepackage{fancyhdr,xcolor}
% the head clashes with the box, so we change the page geometry
\usepackage[headsep=1.3cm,headheight=4cm]{geometry}
\renewcommand{\headrulewidth}{0pt}
\makeatletter
\fancyhf{}
% we use center head to place the box in it
\fancyhead[C]{\leavevmode
\smash{% occupy no vertical space
\raise\dimexpr-\headsep-\textheight-1cm\relax% move down by text heiht + head sep + 1cm so that it sits 1cm below the text
\hbox to 0pt{% start a box occupying zero space
\color{red}% colour
\fboxsep0pt % \fbox should not add any extra spacing
\fboxrule5pt % line width
\hss\fbox{% \hss is infinitely shrinkable space
% phantom rule occupying exactly the right space:
% width of the text + 2*1.5cm
% height of the text + 2*1cm
\phantom{\rule{\dimexpr\textwidth+3cm}{\dimexpr\textheight+2cm\relax}}%
}\hss%
}%
}%
}
\fancyhead[R]{\thepage} % print the page number in the right head
\pagestyle{fancy} % use the newly defined style
% new style {nofancy}
\fancypagestyle{nofancy}{
\ps@@fancy % copy the default {fancy} style
\fancyhead[C]{} % make the center head empty
}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\thispagestyle{nofancy}
\lipsum[21-40]
\end{document}
答案2
重新定义当前\fbox
使用不同的边距允许使用\fancypage
包中的简单命令fancybox
\documentclass[a4paper,DIV9]{scrartcl}
\usepackage{lipsum}
\usepackage{fancybox}
\makeatletter
\long\def\FBox#1{%
\leavevmode
\setbox\@tempboxa\hbox{%
\color@begingroup
\kern15mm{#1}\kern15mm
\color@endgroup}%
\@frameb@x\relax}
\makeatother
\fancypage{\fboxsep=1cm\fboxrule=5pt\FBox}{}
\begin{document}
\lipsum[1-20]
\thisfancypage{}{}% no frame
\lipsum[21-40]
\end{document}
答案3
我做了一些实验,找到了使用background
和tikz
包的解决方案。我仍然不明白后台包中的位置选项是如何工作的——我不确定它从哪里测量到哪里。通过调整参数,我找到了这个解决方案:
\usepackage[contents={},opacity=1,scale=1.5,color=red!100]{background}
\usepackage{ifthen}
\AddEverypageHook{%
\ifthenelse{\isodd{\thepage}}%
{\backgroundsetup{angle=0,position={2.6cm,-4.7cm},%
contents={\begin{tikzpicture}
\draw [ultra thick] (0,0) rectangle (0.75\textwidth,0.73\textheight);
\end{tikzpicture}}}}%
{\backgroundsetup{angle=0,position={3.85cm,-4.7cm},%
contents={\begin{tikzpicture}
\draw [ultra thick] rectangle (0.75\textwidth,0.73\textheight);
\end{tikzpicture}}}}%
\BgMaterial}
仍需研究如何在不需要时关闭背景。