我想有一个包含 2 列的布局,用于平行文本。但有时一列中的文本比另一列中的多得多。假设第 1 列只有 10 行,而平行的第 2 列有 50 行。常规行为会在第 1 列中留下大量空白,并在下一页中继续第 2 列。但是,在第 11 行,第 2 列的文本可以自动“扩展”到第 1 列吗?我知道如何手动执行此操作,方法是关闭 2 列环境并将第 2 列剩余文本切换到正常的 1 列。我只是想知道是否有办法自动化该过程,以便在我更改文本时重新格式化文本...我还必须指出,我是 LaTex 初学者,如果我的问题不够尖锐,请原谅...
答案1
如果您不需要 和 的语言工具reledmac
,reledpar
一种方法是将较短的文本与最长的文本放在一起。该包wrapfig
处理图形(和表格),因此文本应该被制作成伪图形(带有tikz
)。当然它不会分成两页。
\setlength\intextsep{0pt}
将抑制短文本后的空行。
\documentclass{article}
\usepackage{tikz}
\usepackage{wrapfig}
\usepackage{lipsum} % dummy text
\usepackage{kantlipsum}% kant like dummy tex
%\setlength\intextsep{0pt} % optional
\begin{document}
\begin{wrapfigure}{l}{0.5\textwidth} % l= left
\begin{tikzpicture}[every node/.style={text width=0.48\textwidth,minimum width=0.48\textwidth,align= justify,inner sep=0pt}]
\node {\kant[1]};
\end{tikzpicture}
\end{wrapfigure}
2. \lipsum[2]
3. \lipsum[3]
\end{document}
更新
除了使用tikz
来制作图形之外,还可以wrapfig
使用newfloat
包来定义一个新的浮点数来满足。
在这种情况下,ShortText
已定义,因此wrapShortText
环境将进行包装。结果与上一个相同。
\documentclass{article}
\usepackage{lipsum} % dummy text
\usepackage{kantlipsum}% kant like dummy tex
\usepackage{wrapfig} % added <<<<<<
\usepackage{newfloat} % added <<<<<
\DeclareFloatingEnvironment[placement={!ht}]{ShortText} % new float <<<<
%\setlength\intextsep{0pt} % optional
\begin{document}
\begin{wrapShortText}{l}{0.48\textwidth}
\kant[1]
\end{wrapShortText}
% longer text
2. \lipsum[2]
3. \lipsum[3]
\end{document}