理想的餐桌套餐

理想的餐桌套餐

我尝试了很多表格包,但没有一个能满足我的所有需求。

我需要固定表格宽度,单元格中有一些填充,它应该能够进行多列和垂直和水平居中文本。它还应该能够手动换行,而不会影响其他单元格的垂直对齐。

有类似的东西存在吗?谢谢!


我想要这张表:

我想要的表格

例如,我有一段非常困难的代码,其中并不包含我需要的一切:

\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}

看起来像这样:

LaTeX 代码

答案1

通过包的tabularx列说明符垂直居中单元格的版本:marray

\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}。可能是我的字体安装出了问题。

相关内容