给书中除一页外的所有页面都加上框架

给书中除一页外的所有页面都加上框架

我正在写一本书,想在所有页面周围放置一个红色的、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

我做了一些实验,找到了使用backgroundtikz包的解决方案。我仍然不明白后台包中的位置选项是如何工作的——我不确定它从哪里测量到哪里。通过调整参数,我找到了这个解决方案:

\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}

仍需研究如何在不需要时关闭背景。

相关内容