我想创建这个表:
我从这个开始,但它不起作用:
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{center}
\begin{tabular}{c|c}
hello & hello \\
\toprule
hello hello hello hello hello hello hello hello hello hello space infinity & hello hello hello hello \\
hello hello hello hello hello & hello hello hello hello \\
\end{tabular}
\end{center}
\end{document}}
我怎样才能解决这个问题?
答案1
像这样:
旁边是来自包(在本例中由包加载)的tabularx
使用的选项!{<option>}
和以及来自同名包的宏:\Xhline{<width>}
array
tabularx
\makecell
\documentclass[11pt,a4paper]{article}
\usepackage{makecell, tabularx}
\begin{document}
\begin{center}
\setcellgapes{5pt}\makegapedcells
\begin{tabularx}{\textwidth}{X!{\vline width 1pt} X}
\makecell{hello} & \makecell{hello} \\
\Xhline{1pt}
hello hello hello hello hello hello hello hello hello hello space infinity
& hello hello hello hello \\
hello hello hello hello hello hello hello hello hello hello space infinity
& hello hello hello hello \\
\end{tabularx}
\end{center}
\end{document}
答案2
不要booktabs
与垂直规则一起使用。
并且不要加载两次包(你有两个\usepackage{graphicx}
)。
我使用了tabularx
、和\\[4pt]
和\rule{0pt}{16pt}
在水平线前后添加一些空间。
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{tabularx}
\begin{document}
\begin{center}
\begin{tabularx}{\textwidth}{X|X}
\multicolumn{1}{c|}{hello} &
\multicolumn{1}{c}{hello} \\[4pt]
\hline
\rule{0pt}{16pt}hello hello hello hello hello hello hello hello hello hello space infinity & hello hello hello hello \\
hello hello hello hello hello & hello hello hello hello \\
\end{tabularx}
\end{center}
\end{document}
答案3
查询附带的屏幕截图给人的印象是,每个表格列的宽度应刚好足够(但不更宽)以排版三个单词“hello”,并以空格分隔。如果这种印象是正确的,则应该p
对两个列都使用该列类型。p
列类型带有一个参数——可用宽度。在序言中,请务必设置一个长度参数并通过指令测量“hello hello hello”的宽度\settowidth
。
哦,如果你使用垂直线,就不要使用booktabs
包(和\midrule
指令)。相反,使用\hline
。
\documentclass[11pt,a4paper]{article}
\usepackage{array} % for "\extrarowheight" macro
\newlength\mylen
\settowidth\mylen{\sffamily hello hello hello} % measure width of "hello hello hello"
\begin{document}
\begin{center}
\sffamily % switch to sans-serif
\setlength\extrarowheight{2pt} % for a more open "look"
\begin{tabular}{p{\mylen}|p{\mylen}}
\multicolumn{1}{c|}{hello} &
\multicolumn{1}{c}{hello} \\[2pt]
\hline
hello hello hello hello hello hello hello hello hello hello space infinity & hello hello hello hello \\
hello hello hello hello hello & hello hello hello hello \\
\end{tabular}
\end{center}
\end{document}
答案4
由于规则非常粗,也许您想要像图中那样有圆形的封盖。使用 Tikz 可以绘制带有圆形封盖的规则。在{NiceTabular}
的环境下nicematrix
,您可以在行、列和单元格下构建 PGF/Tikz 节点,并且可以轻松地将它们与 Tikz 一起使用来绘制您想要的任何规则。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\extrarowheight}{2mm}
\begin{NiceTabular}{>{\raggedleft}p{2.6cm}>{\raggedright\arraybackslash}p{2.6cm}}
\Block{}{hello} & \Block{}{hello} \\
hello hello hello hello hello hello hello hello hello hello hello hello
& hello hello hello hello hello hello hello hello hello hello hello hello \\
hello hello hello hello hello hello hello hello hello hello hello hello
& hello hello hello hello hello hello hello hello hello hello hello hello \\
hello hello hello hello hello hello hello hello hello hello hello hello
& hello hello hello hello hello hello hello hello hello hello hello hello \\
\CodeAfter
\tikz \draw [very thick, line cap = round]
(1-|2) -- (last-|2)
(2-|1) -- (2-|3) ;
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
使用 PGF/Tikz 节点)。