你正在和一个完全的 LaTeX 新手打交道,所以请你保持礼貌 ;) 我正在尝试排版一个特定的布局,但到目前为止我还没有得到想要的结果。我之前尝试过 MS Word,但最后我得出结论,它根本无法完成这项任务,终于找到了一个尝试 LaTeX 的好借口。我觉得在过去的几个小时里,我已经在 LaTeX 方面取得了很大进展,但不知道我现在是否能实现我想要的东西,因此在我花费大量额外的无用时间之前,在这里寻求建议。但我可能会从 xy 问题的角度来解决这个问题 :)
我想要的布局是创建一个“双列”块宏,其中狭窄的左列基本上包含一个旋转 90 度且具有背景颜色的标题,垂直跨越其右侧的内容,右列占据包含内容的其余页面宽度。这些块必须能够嵌套;即,我必须能够将这样的块作为子块放置在左列的内容中。嵌套必须能够进入第 3 层(但通用方法会更好)。并且它还必须能够在中途中断并继续下一页。
为了说明我想要什么,我在最后包含了一个 MWE,它几乎满足了我的要求(除了分页)。
复杂因素包括:
- 我希望左侧“标题”列在旋转的标题文本正上方有一些线条图,并且在列的底部有一些其他线条图,从而有效地形成左列的箭头。
- 如果右侧内容列的内容超出页面边框,我希望左侧列能够在下一页继续,从而有效地在左边距的后续页面上提供一个彩色(空白)带。
- 当整个结构变得太大时,也不应该将其推到新页面 - 我希望它从我放置它的地方开始,并在适用的情况下将其内容分页到下一页。分页不应该是手动的,因为块的内容将以编程方式生成,并且大小可能会有很大差异。
- 此外,当流到下一页时,分割可能出现在内容列的任何位置,但当然不会出现在页眉文本本身的中间(页眉文本总是适合一页,因此如果页眉不能完全放在一页上,则块应该流到下一页)。
我尝试过tabular
,但发现除了页面边框断裂(参见 MWE)之外,所有东西都可以正常工作。 longtable
也没有剪切它;它只在行之间分割,而不是在行内分割。 multicols
不允许我设置列宽,而且parcolumns
我就是无法正确布局。
顺便说一下,我在 Windows 上工作(使用 MiKTeX 和 TeXnicCenter),生成 PDF,但我想这应该没关系。
如果有人能指出我可以使用的其他构造来实现这样的设计,我将非常感激!
这是 MWE。不知道它是否会让更熟练的 LaTeX 用户感到不舒服,但我已经尽力了 ;)
\documentclass[11pt,twoside,a4paper,notitlepage]{book}
\usepackage{array}
\usepackage[table]{xcolor}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{rotating}
\usepackage[none]{hyphenat} % prevent hypenation
% accent color
\definecolor{mycolor}{RGB}{98,127,27}
% sideheader arrow line art
\tikzset{
startarrow/.pic={
\fill[mycolor] (0cm,0.25cm) -- (0.25cm,0cm) -- (0.5cm,0.25cm) -- (0.5cm,0cm) -- (0cm,0cm) -- cycle;
}
}
\tikzset{
endarrow/.pic={
\fill[mycolor] (0cm,0.25cm) -- (0.5cm,0.25cm) -- (0.25cm,0cm) -- cycle;
}
}
% single block
\newlength\contentwidth
\newcommand{\mytable}[3]{{
\setlength\contentwidth{\hsize}
\addtolength\contentwidth{-0.8cm}
\def\arraystretch{0}
\setlength{\tabcolsep}{0.0cm}
\begin{tabular}{p{0.5cm}@{\hspace{0.3cm}}p{\contentwidth}}
\tikz \pic{startarrow}; & \\
\cellcolor{mycolor} \centering {\rotatebox[origin=r]{90}{#2}} & \raggedright\arraybackslash #3\\
\tikz \pic{endarrow}; & \\
\end{tabular}
\let\contentwidth\undefined
}}
\begin{document}
\mytable{1}{Caption of cell1}{\lipsum[1]}
\mytable{1}{Caption of cell2}{\lipsum[2]
\mytable{2}{Caption of cell3}{\lipsum[3]
\mytable{3}{Caption of cell4}{\lipsum[4]}
\mytable{3}{Caption of cell5}{\lipsum[5]}
\mytable{3}{Caption of cell6}{\lipsum[6]}
\mytable{3}{Caption of cell7}{\lipsum[7]}
}
}
\end{document}