我经常想在一列中写公式,在另一列中写文本。这有助于我创建漂亮的备忘单,其中所有内容都对齐且干净,但我无法获得一致的结果。无论我使用 tabular、tabularx、minipages 还是数组,总会存在一些问题(丑陋的表格输出,某些单元格没有对齐的内容,或者生成的表格很好,但无法轻松移动到我想要的位置,等等)。
现在,我正在尝试使用大批环境:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{array}{|l|l|}
\hline
\displaystyle\int x\;dx & \text{\textbf{This} is correctly left justified}\\
\displaystyle\int \dfrac{1}{x}\;dx & \text{\textbf{This} is also correctly left justified}\\
\displaystyle\int \dfrac{\text{degree $m$ polynomial}}{\text{degree $n$ polynomial}}\; dx &
\begin{array}{l}
\text{If $m\geq n$: use this technique}\\
\text{If $m<n$: use that other technique}
\end{array}\\
\displaystyle\int f(x)\;dx & \text{The above two If's are not left justified with the two \textbf{This}'s}\\
\hline
\end{array}
\end{equation*}
\end{document}
输出如下内容:
问题
如您所见,在数组的第三行/第二列,我使用另一个数组语句在同一行中写入两行,但它们稍微向右偏移。我认为那里有一条不可见的空白垂直线(如果我在嵌套数组的列中写入 {|l|} 而不是仅仅 {l},那么实际的线就会在那里)。有什么办法可以消除那个“缩进”吗(如果我们可以这样称呼它)?
附加信息
如果有人问,这里是我使用 tabularx 做的类似尝试(其中我使用 \newline 而不是嵌套数组):
\documentclass{article}
\usepackage{amsmath}
\usepackage{tabularx}
\begin{document}
\begin{table}[h]
\begin{tabularx}{\textwidth}{|lX|}
\hline
$\displaystyle\int x\;dx$ & \textbf{This} is correctly left justified\\
$\displaystyle\int \dfrac{1}{x}\;dx$ & \textbf{This} is also correctly left justified\\
$\displaystyle\int \dfrac{\text{degree $m$ polynomial}}{\text{degree $n$ polynomial}}\;dx$ &
\text{If $m\geq n$: use this technique}\newline
\text{If $m<n$: use that other technique}\\
$\displaystyle\int f(x)\;dx$ & \text{The above two If's are not aligned to the top of the row}\\
\hline
\end{tabularx}
\end{table}
\end{document}
输出如下内容:
如您所见,现在 If 已对齐,但没有与左侧积分的顶部对齐。(对于此示例,不必担心行会溢出表格)。
我一直在玩这种打地鼠游戏,试图找到适合工作的环境,希望能得到一些帮助!
提前致谢。
答案1
您可能喜欢下表:
使用该tabularray
包可以轻松获得它而无需嵌套表格。而且表格代码更短更清晰:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}
\begin{document}
\begin{center}
\begin{tblr}{hline{1,Z}=solid, vlines,
colspec={Q[l, mode=dmath] X[l,m]},
rowsep=5pt
}
\int x\;dx & \textbf{This} is correctly left justified \\
\int \dfrac{1}{x}\;dx & \textbf{This} is also correctly left justified \\
\int \dfrac{\text{degree $m$ polynomial}}
{\text{degree $n$ polynomial}}\;dx
& { If $m\geq n$: use this technique\\
If $m<n$: use that other technique} \\
\int f(x)\;dx & The above two "If's" are aligned to the left and
vertical center of the row \\
\end{tblr}
\end{center}
\end{document}
答案2
以下是我创建表格的方法,同时仍使用环境tabularx
。我使用一个名为\tint
("tall int") 的宏来代替,\int
以使第一行中的积分符号不接触顶行,并使最后一行中的积分符号不接触底行。请注意,我已经摆脱了相当多的包装器\text
。
\documentclass{article}
\usepackage{amsmath} % for "\text" macro
\usepackage{tabularx} % "tabularx" environment and "X" column type
\newcolumntype{L}{>{$\displaystyle}l<{$}} % automatic display-style math mode
\newcolumntype{Y}{>{\raggedright\arraybackslash}X} % left-aligned, not fully justified
\newcommand\tint{\int^{\mathstrut}_{\mathstrut}} % "tall" integral
\begin{document}
\begin{center} % no need for a "table" environment, right?
\renewcommand\tabularxcolumn[1]{m{#1}} % vertical centering
\begin{tabularx}{\textwidth}{|LY|}
\hline
\tint x\,dx
& \textbf{This} is correctly left justified \\
\tint\frac{1}{x}\,dx
& \textbf{This} is also correctly left justified \\
\tint \frac{\text{degree $m$ polynomial}}{\text{degree $n$ polynomial}}\,dx
& If $m\geq n$: use this technique \newline
If $m<n$: use that other technique \\
\tint f(x)\,dx
& The above two If's are not aligned to the top of the row \\
\hline
\end{tabularx}
\end{center}
\end{document}