你好,如上面的简化图所示(颜色与下面的输出有点不同,没关系),我想要制作一张 a5 纸,它可能不是最智能的代码,但我想要页眉、页脚和第一个区域(区域 A,浅蓝色背景,包括区域 B)填满整个纸张的宽度。
A 区是易碎空间(可能 tcolorbox 最好),因为它可以超过一页。它必须延伸到纸张的整个宽度。
区域 B 嵌套在区域 A 内,并且也是易碎(必须是 tcolorbox,或者在最坏的情况下是 tikzpicture,因为我为了简单起见隐藏了一些功能)。我读到 tcolorbox 中的 tcolorbox 默认情况下是牢不可破的,我们应该使用enforce breakable
。不幸的是,它不能很好地工作。它似乎在下一页中坏了。所以这是我按优先顺序想要的:
使区域 A 和区域 B 变得易碎
底部边距适合下方的 tikzpicture(我甚至尝试使用几何,但似乎不起作用),不要高太多,因为现在如果我们在区域 (C) 中插入文本,它似乎非常高
减少除第一页之外其他页面的顶部边距(我猜第一页就可以了)。
下面是我的 MWE 及其输出:
\documentclass[8pt,a5paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{slantsc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{tikzmark,shapes.misc,shapes.callouts}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{lipsum}
\usepackage[pass]{geometry}
\geometry{top=0pt,bottom=0pt}
\setlength\parindent{0pt}
\hyphenpenalty=5000
\usepackage{pbsi}
% \DeclareMathAlphabet{\mathbit}{OT1}{cmr}{bx}{it}
% \renewcommand*\oldstylenums[1]{{\fontfamily{Montserrat-TOsF}\selectfont #1}}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[shortlabels]{enumitem}
\newcommand{\fph}{% Definition of first page figure
\begin{tikzpicture}[
overlay, xshift=-\oddsidemargin-1in,
yshift=-3cm+\topskip+1in+\topmargin+\headheight+\headsep]
\fill[blue!80] (0,0) rectangle (14.8,3);
\end{tikzpicture}
}
\renewcommand{\headrulewidth}{0.0pt}
\fancypagestyle{my1stpagestyle}{%
\fancyhead[C]{}
\fancyfoot[C]{
\begin{tikzpicture}[
overlay, xshift=-\oddsidemargin-7.32cm,
yshift=1.8cm-\topskip-1in-\topmargin-\headheight-\headsep]
\clip (0,-0.5) rectangle (\paperwidth,1);
\fill[blue!80] (0,-0.5) rectangle (\paperwidth,1.2);
\foreach \v in {1,...,30} {\fill[white,rounded corners=1] (0.5*\v,1.25) -- ++(0,-0.7) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,0.7) -- cycle;}
\foreach \t in {1,...,8} {\fill[white,rounded corners=1] (2*\t,1.25) -- ++(0,-1) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,1) -- cycle;}
\end{tikzpicture}
}
}
\fancypagestyle{generalpagestyle}{%
\fancyhead[C]{}%running header
\fancyfoot[C]{\begin{tikzpicture}[
overlay, xshift=-\oddsidemargin-7.32cm,
yshift=1.8cm-\topskip-1in-\topmargin-\headheight-\headsep]
\clip (0,-0.5) rectangle (\paperwidth,1);
\fill[blue!80] (0,-0.5) rectangle (\paperwidth,1.2);
\foreach \v in {1,...,30} {\fill[white,rounded corners=1] (0.5*\v,1.25) -- ++(0,-0.7) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,0.7) -- cycle;}
\foreach \t in {1,...,8} {\fill[white,rounded corners=1] (2*\t,1.25) -- ++(0,-1) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,1) -- cycle;}
\end{tikzpicture}
}
}
\pagestyle{generalpagestyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\thispagestyle{my1stpagestyle}
\fph % this takes no space
\vspace*{-2.4cm}
\hspace*{-1cm}\begin{tcolorbox}[enhanced,breakable,width=\paperwidth+0.08cm,colback=blue!20,frame hidden,sharp corners,enlarge left by=-2.045cm-\@totalleftmargin]
\lipsum[1]
\begin{tcolorbox}[colback=green!20, width=\textwidth,enhanced,breakable,
enforce breakable, frame hidden]
\lipsum[1-7]
\end{tcolorbox}
\end{tcolorbox}
\lipsum[1-5]
\end{document}
以下是输出的重要问题
太感谢了
编辑:根据 samcarter_is_at_topanswers.xyz 的评论,这是我期望的第二页的输出(较小的边距):
答案1
好吧,我最终手动破坏了 tcolorbox。但边距问题通过删除包pass
中的选项得到了解决geometry
。相反,我使用了
\documentclass{extarticle}
\usepackage[a5paper]{geometry}
\geometry{top=1cm,bottom=1cm,left=1cm,right=1cm}