以下是我的 HTML 内容:
<style type="text/css">
table, th, td
{
border: 1px solid black;
border-collapse: collapse;
padding: 2px;
margin: 2px;
}
th { background-color: #dddddd; }
.right { text-align: right; }
.center { text-align: center; }
.left { text-align: left; }
</style>
<table>
<tr>
<th colspan="7">Mérővonalak</th>
</tr>
<tr>
<th class="center" rowspan="2">Sorszám</th>
<th class="center" colspan="2">Pozíció 1</th>
<th class="center" colspan="2">Pozíció 2</th>
<th class="right" rowspan="2">Dőlés°</th>
<th class="right" rowspan="2">Metszéspontok<br>száma</th>
</tr>
<tr>
<td class="center">1</td>
<td class="center"><small>17.90 mm</small></td>
<td class="center"><small>27.19 mm</small></td>
<td class="center"><small>-192.10 mm</small></td>
<td class="center"><small>69.53 mm</small></td>
<td class="right">-90.0°</td>
<td class="right">29</td>
</tr>
</table>
我曾尝试在 XeLaTeX 中执行相同操作。我不得不旋转最后一列,因为表格没有足够的水平空间。
\begin{tabular}{|c|r|r|r|r|r|r|}
\hline
\multicolumn{7}{|c|}{Mérővonalak} \\
\hline
\multirow{2}{*}{Sorszám}
& \multicolumn{2}{|c|}{Pozíció 1}
& \multicolumn{2}{|c|}{Pozíció 2}
& \multirow{2}{*}{Dőlés}
& \multirow{2}{*}{\rotatebox{90}{~\parbox{1.5cm}{Metszéspontok Száma}~}} \\
\cline{2-5}
& Vízszintes
& Függőleges
& Vízszintes
& Függőleges
& \\
\hline
\end{tabular}
垂直文本超出了表格范围。它甚至覆盖了表格下的其他文本。表格环境不应该自动计算适合内容所需的行的垂直大小吗?我做错了什么?
期望:
实际的:
通过使用赫伯特规则,它几乎是完美的:
我可以通过将高度参数更改为 3cm 来实现这一点\rule
。但这不是一个解决方案,因为单元格数据来自数据库。它可以是一个短单词,也可以是一个很长的单词。我需要一个灵活的解决方案。
答案1
如果您不知道将要使用的对象的宽度/高度,则应将其存储在一个框中,以便 LaTeX 可以计算它。这与 Herbert 的答案略有不同,它将未知单元格的内容存储在 中\box0
。如果您的文档大得多,您可以制作自己的框,但在这个 MWE 中就足够了:
\documentclass{article}
\usepackage{fontspec}% http://ctan.org/pkg/fontspec
\usepackage{graphicx,multirow}% http://ctan.org/pkg/{graphicx,multirow}
\begin{document}
\setbox0\hbox{\tabular{@{}l}Metszéspontok\\ Száma\endtabular}
\begin{tabular}{|c|r|r|r|r|r|r|}\hline
\multicolumn{7}{|c|}{Mérővonalak} \\\hline
\multirow{2}{*}{Sorszám}
& \multicolumn{2}{|c|}{Pozíció 1}
& \multicolumn{2}{|c|}{Pozíció 2}
& \multirow{2}{*}{Dőlés}
& \rule{0pt}{\dimexpr\wd0-\normalbaselineskip}\\\cline{2-5} % save space for the rotatebox
& Vízszintes
& Függőleges
& Vízszintes
& Függőleges
&
& \rotatebox{90}{\rlap{\usebox0}}\\\hline
\end{tabular}
\end{document}
随着每行被移开\normalbaselineskip
,\dimexpr\wd0-\normalbaselineskip
插入适当的规则高度以实现正确显示。
答案2
我不会在这里使用多行单元格。旋转高度为 0 的框并用于\rule
垂直空间(如果使用 pdflatex,则删除 fontspec):
\documentclass{article}
\usepackage{fontspec}
\usepackage{graphicx,multirow}
\begin{document}
\begin{tabular}{|c|r|r|r|r|r|r|}\hline
\multicolumn{7}{|c|}{Mérővonalak} \\\hline
\multirow{2}{*}{Sorszám}
& \multicolumn{2}{|c|}{Pozíció 1}
& \multicolumn{2}{|c|}{Pozíció 2}
& \multirow{2}{*}{Dőlés}
& \rule{0pt}{2cm}\\\cline{2-5} % save space for the rotatebox
& Vízszintes
& Függőleges
& Vízszintes
& Függőleges
&
& \rotatebox{90}{\rlap{\tabular{@{}l}Metszéspontok\\ Száma\endtabular}}\\\hline
\end{tabular}
\end{document}
如果您希望允许使用 Metszéspontok 连字符,则使用:
\begin{tabular}{|c|r|r|r|r|r|r|}\hline
\multicolumn{7}{|c|}{Mérővonalak} \\\hline
\multirow{2}{*}{Sorszám}
& \multicolumn{2}{|c|}{Pozíció 1}
& \multicolumn{2}{|c|}{Pozíció 2}
& \multirow{2}{*}{Dőlés}
& \rule{0pt}{1.75cm}\\\cline{2-5} % save space for the rotatebox
& Vízszintes
& Függőleges
& Vízszintes
& Függőleges
&
& \rotatebox{90}{\rlap{\parbox{2cm}{\hspace{0pt}Metszéspontok Száma}}}\\\hline
\end{tabular}
并且不知道文本的宽度/高度:
\begin{tabular}{|c|r|r|r|r|r|r|}\hline
\multicolumn{7}{|c|}{Mérővonalak} \\\hline
\multirow{2}{*}{Sorszám}
& \multicolumn{2}{|c|}{Pozíció 1}
& \multicolumn{2}{|c|}{Pozíció 2}
& \multirow{2}{*}{Dőlés}
& \rotatebox{90}{\tabular{@{}l}Metszéspontok\\ Száma\endtabular}
\\\cline{2-5}
& Vízszintes
& Függőleges
& Vízszintes
& Függőleges
&
& \\\hline
\end{tabular}
顺便说一句:没有垂直线的表格更容易阅读......