我尝试了很多表格包,但没有一个能满足我的所有需求。
我需要固定表格宽度,单元格中有一些填充,它应该能够进行多列和垂直和水平居中文本。它还应该能够手动换行,而不会影响其他单元格的垂直对齐。
有类似的东西存在吗?谢谢!
我想要这张表:
例如,我有一段非常困难的代码,其中并不包含我需要的一切:
\documentclass[a4paper,12pt]{article}
\usepackage{times}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{tabu}
\begin{document}
\tabulinesep=2.2mm
\begin{tabu} to 16cm {|X[2,c]|X[2,c]|}
\hline
\multicolumn2{|c|}{\textbf{Reklama}} \\ \tabucline
\firsthline
\underline{\textbf{Malířství Praha}} & \\
Maluješ, malujeme, malujete & \\
Objednávejte nyní & Text reklamy je nejasný a matoucí. \\
\textit{malirstvi-praha.cz}\\
\hline
\end{tabu}
\end{document}
看起来像这样:
答案1
通过包的tabularx
列说明符垂直居中单元格的版本:m
array
\documentclass[a4paper,12pt]{article}
\usepackage{times}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{array}
\usepackage{tabularx}
\begin{document}
\renewcommand*{\tabularxcolumn}[1]{m{#1}}
\noindent
\begin{tabularx}{\linewidth}{|X|X|}
\hline
\multicolumn2{|c|}{\textbf{Reklama}} \\
\hline
\begin{tabular}{@{}l@{}}
\underline{\textbf{Malířství Praha}}\\
Maluješ, malujeme, malujete\\
Objednávejte nyní
\textit{malirstvi-praha.cz}\\
\end{tabular}
& Text reklamy je nejasný a matoucí. \tabularnewline
\hline
\end{tabularx}
\end{document}
具有更大垂直空间的版本
较大的\arraystretch
行仅适用于常规行。如果表格单元格的高度或深度太大,则不会产生效果。以传统方式添加垂直空间会对垂直规则产生问题。
以下示例通过不可见规则添加它们:
\documentclass[a4paper,12pt]{article}
\usepackage{times}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{array}
\usepackage{tabularx}
\begin{document}
\renewcommand*{\tabularxcolumn}[1]{m{#1}}
\newcommand*{\tabvspace}{2ex}
\newcommand*{\tabtopspace}[1]{%
\sbox0{#1}%
\ht0=\dimexpr\ht0 + \tabvspace\relax
\rule{0pt}{\ht0}%
\ignorespaces#1%
}
\newcommand*{\tabbottomspace}[1]{%
\sbox0{#1}%
\dp0=\dimexpr\dp0 + \tabvspace\relax
\rule[-\dp0]{0pt}{0pt}%
\ignorespaces#1%
}
\newcommand*{\tabbothspaces}[1]{%
\sbox0{#1}%
\ht0=\dimexpr\ht0 + \tabvspace\relax
\dp0=\dimexpr\dp0 + \tabvspace\relax
\rule[-\dp0]{0pt}{\dimexpr\ht0 + \dp0\relax}%
\ignorespaces#1%
}
\noindent
\begin{tabularx}{\linewidth}{|X|X|}
\hline
\multicolumn2{|c|}{\tabbothspaces{\textbf{Reklama}}} \\
\hline
\begin{tabular}{@{}l@{}}
\tabtopspace{\underline{\textbf{Malířství Praha}}}\\
Maluješ, malujeme, malujete\\
Objednávejte nyní
\tabbottomspace{\textit{malirstvi-praha.cz}}\\
\end{tabular}
& Text reklamy je nejasný a matoucí. \tabularnewline
\hline
\end{tabularx}
\end{document}
答案2
通过对列定义和合并单元格进行小幅修正,您可以获得:
\documentclass[a4paper,12pt]{article}
\usepackage{times}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{array}
\usepackage{tabu}
\begin{document}
\tabulinesep =_4mm^4mm
\begin{tabu} to 16cm {|X[m]|X[m]|}
\hline
\multicolumn2{|c|}{\textbf{Reklama}} \tabularnewline
\tabucline
\textbf{\underline{\bfseries Malířství Praha}}
Maluješ, malujeme, malujete
Objednávejte nyní
\textit{malirstvi-praha.cz} & Text reklamy je nejasný a matoucí.
\tabularnewline
\hline
\end{tabu}
\end{document}
注意:
- 餐桌布置中的空行是故意的
- 我在环境中遇到了下划线文本的问题
tabu
,只能使用这种奇怪的结构\textbf{\underline{\bfseries Malířství Praha}
。可能是我的字体安装出了问题。