我有一个水平表格,用 制作\longtable
,有两个单元格:左侧单元格中有文本,右侧单元格包含我用 命令实现的等式\alignat
。如果我使用附加的代码,左侧单元格文本和右侧单元格等式的顶部会出现错位:
\documentclass[11pt, a4paper, twoside, openright, titlepage]{book}
\usepackage[english]{babel}
\usepackage{amsmath,amssymb}
\usepackage{ltxtable}
\begin{document}
\newsavebox\try
\begin{lrbox}{\try}
\begin{minipage}{0.5\textwidth}
\begin{alignat}{3}
\rightarrow ~~~ & \qquad {y_i}^0 ~ = & f \tiny ~ ( \tiny ~ {\mathbf{x}_1}^0 \tiny ~ ) \\
~ & \qquad {\mathbf{y}_i}^0 ~ = & \mathbf{f} \tiny ~ ( \tiny ~ {\mathbf{x}_1}^0 \tiny ~ ) \\
~ & \qquad {s_i}^0 ~ = & ~~ F \tiny ~ ( \tiny ~ {y_i}^0, \mathbf{y}^0 \tiny ~ )
\end{alignat}
\end{minipage}
\end{lrbox}
\begin{longtable}{p{0.5\textwidth}p{0.5\textwidth}}
Objective - fitness evaluation for the first population: objective values and fitness indices, $ {y_i}^0 $ and $ {s_i}^0 $, for the first generation; & \usebox{\try}
\end{longtable}
\end{document}
我希望表格看起来像第二张图片(显然我可以用 LaTeX 制作它,我只是用 PhotoShop 编辑了第一个屏幕截图):
不必关心 box 和 minipage 对象的用法,它只是允许将 用到\alignat
长表中:我已经发现问题并不取决于这些项目。我尝试使用环境将方程式直接插入表中,\aligned
情况完全相同。我还尝试了\strut
和等调整大小命令\setlength
,但仍然没有任何结果。
我需要使用\longtable
命令,因为该表格将成为更长的表格的一部分,我必须将其分成两页。
您有什么办法可以解决这个问题吗?我真的不知道该如何应对。
答案1
\tiny~
除了发出几次警告外,我不确定应该做什么。
您想使用该[t]
选项minipage
,但更正插入的垂直空格
\documentclass[11pt, a4paper, twoside, openright, titlepage]{book}
\usepackage[english]{babel}
\usepackage{amsmath,amssymb}
\usepackage{calc}
\usepackage{ltxtable}
\newsavebox{\try}
\begin{document}
\begin{lrbox}{\try}
\begin{minipage}[t]{0.5\textwidth-\tabcolsep}
\vspace{-\baselineskip}
\vspace{-\abovedisplayskip}
\begin{alignat}{2}
\rightarrow && \qquad {y_i}^0 &= f({\mathbf{x}_1}^0) \\
&& \qquad {\mathbf{y}_i}^0 &= \mathbf{f}({\mathbf{x}_1}^0) \\
&& \qquad {s_i}^0 &= F({y_i}^0, \mathbf{y}^0)
\end{alignat}
\end{minipage}
\end{lrbox}
\begin{longtable}{
@{}
p{0.5\textwidth-\tabcolsep}
p{0.5\textwidth-\tabcolsep}
@{}
}
Objective - fitness evaluation for the first population:
objective values and fitness indices, ${y_i}^0$ and ${s_i}^0$,
for the first generation; & \usebox\try
\end{longtable}
\end{document}
请注意,必须减小列宽以适应列间空间。对齐是通过使用适当的标记来实现的:aligned
和“对齐
答案2
由于 OP 表示我的评论解决了问题,我将其重新发布为答案。在这里,我手动将 应用于\raisebox
,\usebox{try}
以便将基线与顶行对齐。
\documentclass[11pt, a4paper, twoside, openright, titlepage]{book}
\usepackage[english]{babel}
\usepackage{amsmath,amssymb}
\usepackage{ltxtable}
\begin{document}
\newsavebox\try
\begin{lrbox}{\try}
\begin{minipage}{0.5\textwidth}
\begin{alignat}{3}
\rightarrow ~~~ & \qquad {y_i}^0 ~ = &
f \tiny ~ ( \tiny ~ {\mathbf{x}_1}^0 \tiny ~ ) \\
~ & \qquad {\mathbf{y}_i}^0 ~ = &
\mathbf{f} \tiny ~ ( \tiny ~ {\mathbf{x}_1}^0 \tiny ~ ) \\
~ & \qquad {s_i}^0 ~ = &
~~ F \tiny ~ ( \tiny ~ {y_i}^0, \mathbf{y}^0 \tiny ~ )
\end{alignat}
\end{minipage}
\end{lrbox}
\begin{longtable}{p{0.5\textwidth}p{0.5\textwidth}}
Objective - fitness evaluation for the first population: objective values
and fitness indices, $ {y_i}^0 $ and $ {s_i}^0 $, for the first generation; &
\raisebox{-.73\baselineskip}{\usebox{\try}}
\end{longtable}
\end{document}