如何在分页符处更改段落中间的 \hsize,尤其是双列?

如何在分页符处更改段落中间的 \hsize,尤其是双列?

原始问题是:如何在 LaTeX 中获取两列不同宽度的列?

我知道这个老问题:如何创建两列布局,且两列的宽度(和文本)不同?但实际上并不需要双列布局,而只需要边缘处的图片。

其实单独设置列宽并不难,我可以用 LaTeX 手动设置,也可以用flowfram包来方便设置。但是 columnbreak 处似乎有点奇怪,\hsize直到新段落才会改变。举个例子:

\documentclass{article}
\usepackage{microtype}
\usepackage{lipsum}
\usepackage{flowfram}
\onecolumntopinarea{static}{0pt}{.3\textwidth}{\textheight}{0pt}{0pt}
\onecolumntopinarea{static}{0pt}{.6\textwidth}{\textheight}{.4\textwidth}{0pt}
\begin{document}
\lipsum
\end{document}

在此处输入图片描述

然后我必须进行试运行,\par在列断点处手动添加,并\noindent在下一列的开头添加。但我认为它应该是自动的,即使是这种愚蠢的方法。

我知道在 LaTeX 中这可能非常困难。我不熟悉 LaTeX 的输出路径。我只想知道它是否可能的自动完成此操作? 有没有什么新方法可以实现此目的?

我对 ConTeXt 了解不多。不容易在 ConTeXt 中使用可变列宽。但我注意到手册中的一个图元乐趣
在此处输入图片描述
因此,在 MetaPost 的帮助下(或者没有?)这似乎是可能的。

欢迎提供任何信息。

答案1

我不知道如何使用 Lua,但我怀疑你想要的东西在 pdfTeX 中是不可能实现的。正如 Joseph 指出的那样,你不能在段落中间更改一些参数。\hsize段落末尾有效的参数是在 TeX 段落生成器中使用的参数。

至于分栏符,TeX 会在其“主垂直列表”中累积垂直材料,直到足以填满一页,然后运行输出例程。(这是简化;请参阅TeXbook或者TeX 按主题分类了解详细信息。)这意味着段落已被拆分成宽度的框\hsize并添加到垂直列表中(以及它们之间的一些胶水以保持基线\baselineskip分开)。因此,当 TeX 开始决定第一列的断点时,最后一列中将出现的内容已经排版完毕。

编辑:
在评论中,亨德里克询问了滥用输出例程和拆箱的问题。即使忽略了准确找到需要拆箱的材料的难度,我也想不出处理连字符的好方法:

\setbox0\vbox{
        \hsize40pt
        \rightskip=5pt
        \parindent=0pt
        hyphen\-ation
}
\setbox0\vbox{
        \unvbox0
        \global\setbox1\lastbox
        \unskip
        \unpenalty
        \setbox2\lastbox
        \global\setbox1\hbox{%
                \unhbox2
                \unskip
                \
                \unhbox1
                \unskip
                \unskip
                \unpenalty
        }
}
\unhbox1
\bye

这里我们设置框 0 具有已知内容。

\vbox(18.94444+0.0)x40.0
.\hbox(6.94444+1.94444)x40.0
..\hbox(0.0+0.0)x0.0
..\tenrm h
..\kern-0.27779
..\tenrm y
..\tenrm p
..\tenrm h
..\tenrm e
..\tenrm n
..\自由裁量
..\tenrm -
..\glue(\rightskip) 5.0
.\罚款400
.\glue(\baselineskip) 3.37697
.\hbox(6.67859+0.0)x40.0,胶合组12.77771fil
..\tenrm a
..\tenrm t
..\tenrm 我
..\tenrm o
..\tenrm n
..\罚款10000
..\glue(\parfillskip) 0.0 加 1.0fil
..\glue(\rightskip) 5.0

因为我们知道它有两条线,所以我们可以直接将它拉开并将内容塞进盒子 1 中。

\hbox(6.94444+1.94444)x60.5557
.\hbox(0.0+0.0)x0.0
.\tenrm h
.\kern-0.27779
.\tenrm y
.\tenrm p
.\tenrm h
.\tenrm e
.\tenrm n
.\自由裁量
.\tenrm -
.\glue 3.33333 加 1.66666 减 1.11111
.\tenrm a
.\tenrm t
.\tenrm 我
.\tenrm o
.\tenrm n

如果这个词没有连字符,这个句子就会起作用,但在这里我们得到的是
“hyphen-ation”

相关内容