如何将段落或图像插入回忆录文档每一页的相同位置?

如何将段落或图像插入回忆录文档每一页的相同位置?

如何使用 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

前四页如下所示:

第1页 第2页 第3页 第4页

我尝试尽可能多地评论源代码。不过,这里还是有一个简短的描述:它创建了一个列集两列(其中填充了虚假文本)。它还定义了一个列设置区域state可以设置为startrepeat。 值start排版此区域,只要有足够的文本可放置,值repeat排版 总是 。 您可以在第四页看到这一点。 列设置区域为白色,因为没有剩余文本可显示,如果设置为start=start,则该区域将不会被保留。

然后,textflow当预定义的列集区域已满时,创建一个来中断文本(到下一页),以便没有文本超出其保留空间。

该代码是柱手册作者:汉斯·哈根。

相关内容