我尝试制作这样的表格,但无法让第一列的文本居中。这是我的代码,有人能给我提示吗?
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{amsmath,amsxtra,amssymb,latexsym, amscd,amsthm}
\usepackage{longtable}
\usepackage{multirow}
\usepackage[left=1.5cm,right=1.5cm,top=1.5cm,bottom=1.5cm]{geometry}
\usepackage{arydshln}
\begin{document}
\thispagestyle{empty}
\begin{longtable}{||c|c|p{0.75cm}||}
\hline\hline
\multirow{4}{*}{\parbox{.08\textwidth}{\centering 1 \\ (1 diem)}} & \parbox{.8\textwidth}{dong 1a \\ dong 1b\\ dong 1c} & \parbox{.07\textwidth}{0.25} \\ \cdashline{2-3}
& \parbox{.8\textwidth}{dong 2a \\ dong 2b\\ dong 2c} & \parbox{.07\textwidth}{0.25} \\ \cdashline{2-3}
& \parbox{.8\textwidth}{dong 3a \\ dong 3b\\ dong 3c \\ dong n} & \parbox{.07\textwidth}{0.25} \\ \cdashline{2-3}
& \parbox{.8\textwidth}{dong 4a \\ dong 4b\\ dong 4c \\ dong n \\ dong n+1} & \parbox{.07\textwidth}{0.25}\\ \hline\hline
\end{longtable}
\end{document}
答案1
对于大多数问题,您都可以在@Johannes_B 的评论中得到建议。考虑到这些建议,您可以将表格写成:
\documentclass[11pt,a4paper,oneside]{book}
%\usepackage{amsmath,amsxtra,amssymb,latexsym, amscd,amsthm}
\usepackage{array,longtable,multirow}
\usepackage[left=1.5cm,right=1.5cm,top=1.5cm,bottom=1.5cm]{geometry}
\usepackage{arydshln}
\begin{document}
\thispagestyle{empty}
\begin{longtable}{||c|m{.8\textwidth}|>{\centering\arraybackslash}m{0.75cm}||}
\hline\hline
\multirow{14}{.08\textwidth}{\centering 1 \\ (1 diem)}
& dong 1a \newline dong 1b\newline dong 1c
& 0.25 \\ \cdashline{2-3}
& dong 2a \newline dong 2b\newline dong 2c
& 0.25 \\ \cdashline{2-3}
& dong 3a \newline dong 3b\newline dong 3c \newline dong n
& 0.25 \\ \cdashline{2-3}
& dong 4a \newline dong 4b\newline
dong 4c \newline dong n \newline dong n+1
& 0.25 \\
\hline\hline
\end{longtable}
\end{document}
\begin{longtable}{||c|m{.8\textwidth}|>{\centering\arraybackslash}m{0.75cm}||}
\hline\hline
\multirow{14}{.08\textwidth}{\centering 1 \\ (1 diem)}
& dong 1a \newline dong 1b\newline dong 1c
& 0.25 \\ \cdashline{2-3}
& dong 2a \newline dong 2b\newline dong 2c
& 0.25 \\ \cdashline{2-3}
& dong 3a \newline dong 3b\newline dong 3c \newline dong n
& 0.25 \\ \cdashline{2-3}
& dong 4a \newline dong 4b\newline
dong 4c \newline dong n \newline dong n+1
& 0.25 \\
\hline\hline
\end{longtable}
\end{document}
这使:
在上面的代码中我使用了m{...}
来自数组包的列类型,这简化了最后一列的设置。
我要指出的是,使用包的最优雅的方式就是multirow
计算多行单元格应该跨越的行数。在放置单元格内容时,它multirow
不是很准确,实际上它提供了可选参数来上下移动其内容:
\multirow{nrows}[bigstruts]{width}[fixup]{text}
其中bigstruts
主要用于如果您已经使用bigstrut.sty
并且fixup
是用于微调单元格内容的垂直位置的长度。
由于您使用,longtable
您可能希望将表格拆分成多个页面。可能会出现问题,如何拆分多行单元格。恐怕这不可能自动完成。因此,您将被迫手动拆分更多单元格,或者找到设计表格的其他方法。
附录:如果真正使用长表,我建议按如下方式重新格式化表:
这里没有multirow
单元格问题,第一行将始终出现在表格的顶部......
\documentclass[11pt,a4paper,oneside]{book}
%\usepackage{amsmath,amsxtra,amssymb,latexsym, amscd,amsthm}
\usepackage{array,longtable,multirow}
\usepackage[left=1.5cm,right=1.5cm,top=1.5cm,bottom=1.5cm]{geometry}
\usepackage{arydshln}
\usepackage{caption}% <-- new
\begin{document}
\thispagestyle{empty}
\begin{longtable}{||m{.8\textwidth}
|>{\centering\arraybackslash}m{0.75cm}||}
\caption{For final form of table it have to be complied at list twice (usually three times).}
\label{table1} \\
\hline\hline
\multicolumn{2}{||c||}{1 (1 diem)} \\
\hline
\endfirsthead
\captionsetup{textformat =continued}
\hline
\multicolumn{2}{||c||}{1 (1 diem)} \\
\hline
\endhead
\hline
\multicolumn{2}{r}{continued on the next page}
\endfoot
\hline\hline
\endlastfoot
% table content
dong 1a \newline dong 1b\newline dong 1c
& 0.25 \\ \hdashline
dong 2a \newline dong 2b\newline dong 2c
& 0.25 \\ \hdashline
dong 3a \newline dong 3b\newline dong 3c \newline dong n
& 0.25 \\ \hdashline
dong 4a \newline dong 4b\newline
dong 4c \newline dong n \newline dong n+1
& 0.25 \\
\end{longtable}
\end{document}