我想创建一个 XeLaTeX 布局, multicol
其中的列(本例中为两列,没有图形,只有文本)在相交处倾斜。线条仍然应该是彼此下方的普通线条,但每条线的起点/终点应该每条线滑动一点,使其看起来像这样:
xxxxxxxxxx xxxx
xxxxxxxxxx xxxx
xxxxxxxxx xxxxx
xxxxxxxxx xxxxx
SECTION xxxxxx
xxxxxxxx xxxxxx
xxxxxxx xxxxxxx
xxxxxxx xxxxxxx
xxxxxx xxxxxxxx
xxxxxx xxxxxxxx
xxxxx xxxxxxxxx
xxxxx xxxxxxxxx
xxxx SUBSECTION
xxxx xxxxxxxxxx
因此,不是整根柱子都倾斜,而一根柱子变窄,而另一根柱子变宽。
我见过使用的示例\parshape
,但我发现这些示例都是基于计算行数并或多或少手动定义形状。我还需要 LaTeX 保留功能multicol
(分页符、文本流等),并在较长的章节的每一页上自动执行这些操作。
我该如何创建这样的布局?如果multicol
这种布局不容易混合,有什么替代方案吗?
答案1
这有太多限制,我不知道从哪里开始。主要限制是您需要用\endgraf
not来分隔段落\par
(并且需要在本地重新定义节标题以不使用\par
它们)。
\documentclass{article}
\usepackage{shapepar}
\iffalse
xxxxxxxxxx xxxx
xxxxxxxxxx xxxx
xxxxxxxxx xxxxx
xxxxxxxxx xxxxx
SECTION xxxxxx
xxxxxxxx xxxxxx
xxxxxxx xxxxxxx
xxxxxxx xxxxxxx
xxxxxx xxxxxxxx
xxxxxx xxxxxxxx
xxxxx xxxxxxxxx
xxxxx xxxxxxxxx
xxxx SUBSECTION
xxxx xxxxxxxxxx
\fi
\count0=0
\def\a{\advance\count0 1 \the\count0. One two three four. }
\def\b{\a\a\a\endgraf\a\a\a Red blue green yellow. }
\def\c{\b\b}
\def\z{\c\c}
\begin{document}
\makeatletter
\let\@@SH@restack\SH@restack
\def\SH@restack{\def\nobreak{\penalty\z@}\@@SH@restack}
\setbox8\hbox{\Shapepar
{{6}
{0}b{0}\\
{0}t{0}{12}\\
{1}t{0}{12}\\
{2}t{0}{11}\\
{3}t{0}{11}\\
{4}t{0}{9}\\
{5}t{0}{10}\\
{6}t{0}{9}\\
{7}t{0}{9}\\
{8}t{0}{8}\\
{9}t{0}{6}\\
{10}t{0}{6}\\
{11}t{0}{4}\\
{12}t{0}{4}\\
{12}e{0}\\
{13}b{14}\\
{13}t{14}{4}\\
{14}t{14}{4}\\
{15}t{13}{5}\\
{16}t{13}{5}\\
{17}t{12}{6}\\
{18}t{12}{6}\\
{19}t{11}{7}\\
{20}t{11}{7}\\
{21}t{10}{8}\\
{22}t{8}{10}\\
{23}t{8}{10}\\
{24}t{6}{12}\\
{25}t{6}{12}\\
{25}e{6}}
\z
\par}
{
\setbox0\hbox{\unhbox8 \global\setbox1\lastbox}
\dimen0\ht1
\advance\dimen0\dp1
\divide\dimen0 by 2
\splittopskip\baselineskip
\setbox0\vsplit1 to \dimen0
\setbox0=\vbox{\break\unvbox0}
\setbox2=\vsplit0 to 0pt
\box0
\nobreak
\vskip-\dimen0
\box1
}
\end{document}
请注意,这是一个更新的答案,在第一个版本中,我弄乱了shapepar
线条规格,导致右边缘摇晃。
答案2
您说出名字,我们就有;)。
ftp://ftp.gust.org.pl/pub/GUST/bulletin/08/07bj.ps.gz
缺点:文章是波兰语的。但是那里有(简单的)TeX 代码,它或多或少可以满足您的要求(以及更多功能)。