![在表格中为 \dfrac 创建额外空间,同时垂直居中多行和其他单元格](https://linux22.com/image/456787/%E5%9C%A8%E8%A1%A8%E6%A0%BC%E4%B8%AD%E4%B8%BA%20%5Cdfrac%20%E5%88%9B%E5%BB%BA%E9%A2%9D%E5%A4%96%E7%A9%BA%E9%97%B4%EF%BC%8C%E5%90%8C%E6%97%B6%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%E5%A4%9A%E8%A1%8C%E5%92%8C%E5%85%B6%E4%BB%96%E5%8D%95%E5%85%83%E6%A0%BC.png)
\documentclass{article}
\usepackage[a4paper, portrait, margin=0.5in]{geometry}
\usepackage[table]{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{amsmath}
\usepackage{multirow}
\begin{document}
\large
\renewcommand{\arraystretch}{1.5}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
\begin{center}
\begin{tabular}{ | M{1.5cm} | M{9.5cm} | M{1cm} | M{4.5cm} |}
\hline
\centering \multirow{6}{*}{1} &
$f(3) = 100$
\par \medskip
$a=\dfrac{50}{21}-\dfrac{13}{42}b$ & \hfill \textbf{A} & B
\tabularnewline
\cline{2-4}
& $3x^2-x-4=(3x-4)(x+1)$ & \hfill \textbf{C} & D
\tabularnewline
\cline{2-4}
& \vspace{0.15cm} $f(-1) = 0$ or $f(\dfrac{4}{3}) = 0$
\par \medskip
$b=-\dfrac{2}{3}a$ & \hfill \textbf{E} & F
\tabularnewline
\cline{2-4}
& $a=3, \; b=-2$ & \hfill \textbf{G} & H
\tabularnewline
\hline
\end{tabular}
\end{center}
\end{document}
AB 行和 EF 行底部的 \dfrac 被 \cline 切断。有没有办法为分数创建额外的空间,同时保持行中其他单元格的垂直居中?(带有 \dfrac 的单元格也应垂直居中)
多行列(标记为“1”)的垂直居中是可以通过的,但我是一个完美主义者。有人能帮忙确保多行列的垂直居中吗?
提前致谢!
答案1
像这样?
%\documentclass{article}
%\usepackage[a4paper, portrait, margin=0.5in]{geometry}
\documentclass[margin=3mm]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}
\begin{document}
\begin{tblr}{hlines, vlines,
colspec={Q[c,m, wd=15mm] Q[l,m, wd=95mm, mode=dmath]
Q[r,m, wd=10mm, font=\bfseries] Q[l, m, wd=45mm]},
rowsep=7pt,
}
\SetCell[r=4]{c} 1
& \begin{aligned}
f(3) & = 100 \\
a & =\dfrac{50}{21} - \dfrac{13}{42}b
\end{aligned} & A & B \\
& 3x^2-x-4=(3x-4)(x+1)
& C & D \\
& \begin{aligned}
f(-1) & = 0 \text{ or } f\biggl(\dfrac{4}{3}\biggr) = 0 \\
b & = -\dfrac{2}{3}a
\end{aligned} & E & F \\
& a=3, b=-2 & G & H \\
\end{tblr}
\end{document}
附录:
要使单元格中的所有方程式左对齐(如您在下面的评论中所要求的那样),并保留简单的表格代码和单元格内容周围所需的垂直空间,最简单的方法是使用环境array
。例如:
\begin{array}{@{}l}
f(3) = 100 \\
a =\dfrac{50}{21} - \dfrac{13}{42}b
\end{array}
对于较短的写作来说,定义新的环境可能会很方便。
\newenvironment{la}%
{
\begin{array}{@{} l}
}
{
\end{array}
}
包含两种数组编写方式的 MWE 为:
%\documentclass{article}
%\usepackage[a4paper, portrait, margin=0.5in]{geometry}
\documentclass[margin=3mm]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}
\newenvironment{la}%
{
\begin{array}{@{} l}
}
{
\end{array}
}
\begin{document}
\begin{tblr}{hlines, vlines,
colspec={Q[c,m, wd=15mm] Q[l,m, wd=95mm, mode=dmath]
Q[r,m, wd=10mm, font=\bfseries] Q[l, m, wd=45mm]},
row{1} = {font=\bfseries, mode=text},
row{2-Z} ={rowsep=7pt},
}
no. & equations & right & left \\
\SetCell[r=4]{c} 1
& \begin{array}{@{} l}
f(3) = 100 \\
a = \dfrac{50}{21} - \dfrac{13}{42}b
\end{array} & A & B \\
& 3x^2-x-4=(3x-4)(x+1)
& C & D \\
& \begin{la}
f(-1) = 0 \quad\text{or}\quad f\biggl(\dfrac{4}{3}\biggr) = 0 \\
b = -\dfrac{2}{3}a\hfill
\end{la} & E & F \\
& a=3, b=-2 & G & H \\
\end{tblr}
\end{document}
答案2
该软件包nicematrix
可以帮助解决几个问题,并且代码更简单。
该环境NiceTabularX
允许将表格保留在文本区域内。\begin{NiceTabularX}{<total width>}{ X ....
\Block{<nro of rows - nro of columns>}{<content>}
将使内容在分配的空间中居中(例如,本例中为 3x1 单元格)并允许\\
在内部使用。
hvlines
将绘制所有线条。
\documentclass{article}
\usepackage[a4paper, portrait, margin=0.5in, showframe]{geometry}% added showframe <<<<<<<<<<<<<
\usepackage[table]{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{amsmath}
\usepackage{multirow}
\usepackage{nicematrix} % added <<<<<<<<<<<
\begin{document}
\large
\renewcommand{\arraystretch}{1.5}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % centered column
\newcolumntype{B}[1]{>{\bfseries\centering\arraybackslash}m{#1}} % bold column
\newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
\noindent\begin{NiceTabularX}{\linewidth}{X C{9.5cm} B{1cm} C{4.5cm} }[hvlines]
\Block{8-1}{1} &\Block{3-1}{$\begin{aligned}
f(3) & = 100 \\
a &=\dfrac{50}{21}-\dfrac{13}{42}b
\end{aligned}$ } &\Block{3-1}{A} &\Block{3-1}{B} \\
& & & \\
& & & \\
& $3x^2-x-4=(3x-4)(x+1)$ &C & D \\
&\Block{3-1}{$\begin{aligned}
f(-1) & = 0 \text{ or } f\biggl(\dfrac{4}{3}\biggr) = 0\\
b & = -\dfrac{2}{3}a
\end{aligned}$} &\Block{3-1}{E} & \Block{3-1}{F} \\
& & & \\
& & & \\
& $a=3, \; b=-2$ &G & H \\
\end{NiceTabularX}
\end{document}
答案3
这是使用 的另一种方法nicematrix
。您必须编译两次。
\NiceMatrixOptions{cell-space-limits = 2pt}
将增加间距来适应您的大分数。- 列类型
wc
,wl
并wr
允许您设置列宽。 - 水平和垂直线的选项
[hvlines]
(但要尊重块)。 1
要将置于第一列的中心,请\Block{4-1}{1}
在单元格 1-1 中使用。{4-1}
表示 4 行 1 列的块。\Block[l]{}{line1\\line2}
允许多行单元格。这称为“单行”块。为了增加垂直间距,我使用了\\[1ex]
。
\documentclass{article}
\usepackage[a4paper, margin=0.5in]{geometry}
\usepackage{nicematrix}
\begin{document}
\large
\renewcommand{\arraystretch}{1.5}
\begin{center}
\NiceMatrixOptions{cell-space-limits = 2pt}
\begin{NiceTabular}{wc{1.5cm}wl{9.5cm}wr{1cm}wl{4.5cm}}[hvlines]
\Block{4-1}{1} & \Block[l]{}{$f(3)=100$\\[1ex]$a=\dfrac{50}{21}-\dfrac{13}{42}b$} & \textbf{A} & B \\
& $3x^2-x-4=(3x-4)(x+1)$ & \textbf{C} & D \\
& \Block[l]{}{$f(-1) = 0$ or $f(\dfrac{4}{3}) = 0$\\[1ex]$b=-\dfrac{2}{3}a$} & \textbf{E} & F \\
& $a=3, \; b=-2$ & \textbf{G} & H
\end{NiceTabular}
\end{center}
\end{document}