我想创建一个页面,在页面底部的左侧和右侧放置一些信息。小页面的底线应该对齐,就像一条“光线”。在摆弄表格、嵌套表格和小页面时,我最终陷入了 LaTeX 奇怪的布局行为:
我注意到,当且仅当小页面中表格的最后一行高度为 1 行时,底线才会正确对齐。否则,它们将与底线对齐。因此,对我有帮助的(以一种黑客方式)是在两个(独立的!)表格环境中引入一个空行。
以下是一个例子:
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{tabularx}
\usepackage{lipsum}
\begin{document}
\begin{minipage}[b]{0.49\textwidth}
\begin{flushleft}
\begin{tabular}[b]{@{}ll@{}}
\textbf{Some Caption A} & Some value B\\
\textbf{Some Caption B} & Another Value C\\
~ & ~
\end{tabular}
\end{flushleft}
\end{minipage}
\begin{minipage}[b]{0.49\textwidth}
\begin{flushright}
\begin{tabular}[b]{@{}ll@{}}
\textbf{Some Caption C} & B\\
\textbf{Some Caption D} & C\\
\textbf{Some Caption E} & \begin{tabular}[t]{@{}l@{}}
E line number 1 \\
E line number 2 \\
E line number 3
\end{tabular} \\
~ & ~
\end{tabular}
\end{flushright}
\end{minipage}
\end{document}
此代码产生预期的结果:
如果我删除代码中的 ~ & ~ 行,我会得到这个:
我在这里做错了什么?我该如何避免?提前感谢您的帮助。
编辑为了避免对我的问题的要点产生进一步的混淆,我稍微改变了这个例子。
編輯 II:为了更加精确,我更改了图片并删除了一些抽象……
答案1
看来你已经发现了 TeX 和 LaTeX 的一个“特性”。请参阅Frank Mittelbach 的回答关于m
-column 的类似问题。
我找到了另外两个“解决方案”,因此最终得到三个:
- 像你所做的那样使用空行
- 用一个
\strut
- 使用
\leavevmode
您的 MWE 与替代方案:
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{tabularx}
\usepackage{lipsum}
\begin{document}
\begin{minipage}[b]{0.49\textwidth}
\begin{flushleft}
\begin{tabular}[b]{@{}ll@{}}
A & B\\
A & My line number 0
\leavevmode
%\strut
%~ & ~
\end{tabular}
\end{flushleft}
\end{minipage}
\begin{minipage}[b]{0.49\textwidth}
\begin{flushright}
\begin{tabular}[b]{@{}ll@{}}
A & B\\
A & C\\
A & \begin{tabular}[t]{@{}l@{}}
My line number 1 \\
My line number 2 \\
My line number 3
\end{tabular} \\
\leavevmode
%\strut
% ~ & ~
\end{tabular}
\end{flushright}
\end{minipage}
\end{document}
如果您编译该文档并对这三种替代方案分别进行注释,您将看到,至少在我的系统上,这三种情况下的结果是相似的。
如果我理解正确,问题在于,一个不可见的支柱“隐藏”在一个组中,那么在最后一行后面添加一个似乎\strut
是最“正确”的解决方案。在我看来,你必须手动纠正对齐。
我不是 Texpert,所以我可能是错的。
答案2
现在,从您的代码中我的第一个想法是,您的表格的错误在于您\textwidth
在单元格中使用了整数,而您应该只使用分数,但后来我发现事实并非如此。
我发现如果你不调整单元格的宽度,里面的文本就会像你看到的一样显示在很长的一行中。因此,如果你想使用带有嵌套表格的迷你页面,你必须事先计算列的宽度。
来自您的 MWE:
\documentclass{文章} \usepackage[a4paper]{几何} \usepackage{tabularx} \usepackage{lipsum}
\begin{document}
\begin{minipage}[t]{0.49\textwidth}
\begin{flushleft}
\begin{tabular}[]{@{}lp{0.245\textwidth}@{}}
A & B\\
A & \lipsum\\
~ & ~
\end{tabular}
\end{flushleft}
\end{minipage}
\begin{minipage}[b]{0.49\textwidth}
\begin{flushright}
\begin{tabular}[b]{@{}ll@{}}
A & B\\
A & C\\
A & \begin{tabular}[t]{@{}p{0.245\textwidth}@{}}
\lipsum[1] \\
\lipsum[2] \\
\lipsum[3]
\end{tabular} \\
~ & ~
\end{tabular}
\end{flushright}
\end{minipage}
\end{document}
请注意,不要定义插入 y 的列,而是\lipsum
使用l
定义:p{length}
其中长度可以用所有单位LaTeX
支持的数值来表示,或者在本例中用文本宽度的分数来表示。我使用 0.245 作为示例,它给出了非常窄的列,但有效。现在您可以玩一下并根据您的需要进行调整。
答案3
你可以把 \lipsum[3] 附近的线条折断
我的代码:
\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{tabularx}
\usepackage{lipsum}
\usepackage{fix-cm}
\begin{document}
\begin{minipage}[b]{0.4\textwidth}
\begin{flushleft}
\begin{tabular}[t]{@{}ll@{}}
A & B\\
A & \lipsum\\
~ & ~
\end{tabular}
\end{flushleft}
\end{minipage}
\begin{minipage}[b]{0.4\textwidth}
\begin{flushleft}
\begin{tabular}[b]{@{}ll@{}}
A & B\\
A & C\\
A & \begin{tabular}[b]{@{}l@{}}
\lipsum[1] \\
\lipsum[2] \\
\lipsum[3]\\
\end{tabular} \\
~ & ~
\end{tabular}
\end{flushleft}
\end{minipage}
\end{document} 我希望这是你想要的。
答案4
您希望将第一个小页面的两行与第二个小页面的三行对齐。逻辑是正确的。由于您选择了底部选项,因此第一个小页面的两行与第二个小页面的最后两行对齐。由于第二个小页面的第三行包含另外三行,因此这似乎是不正确的。因此,您在两个小页面中都添加了 ~&~ 作为最后一行。
如果你使用 top 选项,结果将是
如果您使用底部选项并且两个小页面上都没有 ~&~ 则结果将是
如果您使用底部选项并在第一个小页面上使用 ~&~ ,结果将是
如果你在第二个小页面上使用底部选项 ~&~ ,结果将是
这是不正确的
当你在两个小页面上都使用带有 ~&~ 的底部选项时
虽然按照愿望排列,但并不正确。这是我的观点。