如何使用 LaTeX 在一本 100 页的书中复制《叶之屋》中此布局的一个特征?
(我目前正在使用memoir
它来格式化/构造文档。)
我想要复制的特定特征是蓝色边框。它会出现在书的每一页上,始终在同一个位置。在左页上,它会包含一张图片;在对页上,它会包含一段文字。段落不会连续地从一页流向另一页 - 也就是说,严格来说,它不是“平行”列。它只是同一位置上的一个方框元素,每一页的内容都不同。
因为这是一本很长的书,而且正文仍然有些变化,所以我想以编程方式而不是手动完成这项工作 - 理想情况下,发出一个命令(或分别针对图像和文本块发出一个命令)导致 LaTeX 从图像和文本块列表中填充文档的每一页。
这可能吗?如果可以,我该怎么做?如果这个问题与另一个问题重复,我很抱歉——我自己找不到确切问题的答案。
答案1
粗略估计,您展示的布局在 TeX 中是不可能实现的。您可以使用 LaTeX 执行类似于第一个答案中显示的上下文图像的操作,但您显示的在页面固定位置剪切的样式在 TeX 中很难实现。
TeX 的样板模型是将文本分成几行并放置在无限滚动的“样板”中,然后在某些时候,异步分页器“输出例程”会切掉样板的顶部,可能对其进行装饰并添加页眉和页脚,然后将页面发送出去。但需要注意的一点是,换行是不是此时重新考虑。
因此,虽然将剪切图与段落中的位置绑定在一起并不困难(picins
picinpar
wrapfig
例如,包裹),但这些包裹会影响换行而不是分页符。要实现您想要的效果,您确实需要分页符来影响段落形状。
TeX 就是这样,没有什么是不可能的,但这并不容易,而且很大程度上取决于你拥有的文本的细节。它可能需要一个多遍系统,在分页后,你会在一次传递中留下标记,这些标记会在下一次运行时被拾取以调整段落形状,但这当然会影响分页......
更新:我正在寻找 Frank 最初的“重新考虑段落”提案,但在这些 etex/latex 会议 motes 中对此进行了一些讨论http://www.latex-project.org/papers/pdfTeX-meeting-2005-09-24/LinkedDocuments/etex-meeting-notes.pdf
答案2
这不是你想要的。它既不是 LaTeX,也不是回忆录。不过,这里有一个 ConTeXt 解决方案:
% Used for the fake text
\usemodule [visual]
% Defines the two main columns
\definecolumnset [maincolumns] [n=2]
% Defines the middle part
\definecolumnsetarea [middlecolumn] [both]
[
y=20, % y-offset, number of lines
nx=2, % columns in x direction
ny=8, % numer of lines
offset=5mm, % separate the inner content from the text
loffset=2cm, % left offset
state=repeat, % see text below
]
% Content for the text area
\setupcolumnsetareatext [middlecolumn] [both]
[\flushtextflow{myflow}]
% The text should be broken as needed
\definetextflow [myflow]
[width=10cm]
\starttext
\startcolumnset [maincolumns]
% Text for the inner content
\starttextflow [myflow]
\input knuth
\stoptextflow
% Random text for the main part
\dorecurse{30}{\fakewords{50}{100}}
\stopcolumnset
\stoptext
前四页如下所示:
我尝试尽可能多地评论源代码。不过,这里还是有一个简短的描述:它创建了一个列集两列(其中填充了虚假文本)。它还定义了一个列设置区域。state
可以设置为start
或repeat
。 值start
排版此区域,只要有足够的文本可放置,值repeat
排版 总是 。 您可以在第四页看到这一点。 列设置区域为白色,因为没有剩余文本可显示,如果设置为start=start
,则该区域将不会被保留。
然后,textflow
当预定义的列集区域已满时,创建一个来中断文本(到下一页),以便没有文本超出其保留空间。
该代码是柱手册作者:汉斯·哈根。