我想找到一种简单的方法来调整我的单元longtable
格居中,同时仍然使用p{}
列的定义。
我使用的代码是:
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{longtable}
\usepackage{colortbl}
\usepackage{xcolor}
\newlength\mylength
\begin{document}
\lipsum
\setlength\mylength{\dimexpr\textwidth-5\arrayrulewidth-8\tabcolsep}
\begin{longtable}{|p{.25\mylength}|p{.25\mylength}|p{.25\mylength}|p{.25\mylength}|}
\rowcolor{white}\caption{Test table\label{tab:test1}}
\hline
\rowcolor{blue}\textcolor[rgb]{1,1,1}{Term 1} & \textcolor[rgb]{1,1,1}{Term 2} & \textcolor[rgb]{1,1,1}{Term 3} & \textcolor[rgb]{1,1,1}{Term 4}\\
\hline
Test 1 & Test 2 & Test 3 & Test 4\\
\hline
\end{longtable}
\end{document}
输出结果如下:
如何使表格单元格居中?我希望能够执行这两个选项:
- 将表格中的所有单元格居中
- 单独将一些单元格居中,其他单元格保持原样
答案1
对于第一个问题,您可以定义一个新的列类型
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
并使用C
代替p
。
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{longtable,array}
\usepackage{colortbl}
\usepackage{xcolor}
\newlength\mylength
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\lipsum
\setlength\mylength{\dimexpr\textwidth-5\arrayrulewidth-8\tabcolsep}
\begin{longtable}{|C{.25\mylength}|C{.25\mylength}|C{.25\mylength}|C{.25\mylength}|}
\rowcolor{white}\caption{Test table\label{tab:test1}}\\
\hline
\rowcolor{blue}\textcolor[rgb]{1,1,1}{Term 1} & \textcolor[rgb]{1,1,1}{Term 2} & \textcolor[rgb]{1,1,1}{Term 3} & \textcolor[rgb]{1,1,1}{Term 4}\\
\hline
Test 1 & Test 2 & Test 3 & Test 4\\
\hline
\end{longtable}
\end{document}
要使单个单元格居中,您可以\centering
在单元格内部使用,如下所示:
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{longtable,array}
\usepackage{colortbl}
\usepackage{xcolor}
\newlength\mylength
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\lipsum
\setlength\mylength{\dimexpr\textwidth-5\arrayrulewidth-8\tabcolsep}
\begin{longtable}{|p{.25\mylength}|C{.25\mylength}|C{.25\mylength}|p{.25\mylength}|}
\rowcolor{white}\caption{Test table\label{tab:test1}}\\
\hline
\rowcolor{blue}\centering\textcolor[rgb]{1,1,1}{Term 1} & \textcolor[rgb]{1,1,1}{Term 2} & \textcolor[rgb]{1,1,1}{Term 3} & \textcolor[rgb]{1,1,1}{Term 4}\\
\hline
Test 1 & Test 2 & Test 3 & \centering\arraybackslash Test 4\\
\hline
\end{longtable}
\end{document}
\arraybackslash
如果您使用的话,请记得\centering
在最后一列中添加。