我在尝试将所有文本对齐到单元格顶部时遇到了问题。事实上,看起来是因为我使用的 \makecell,旁边的文本不在它应该在的位置。我尝试了其他问题和网站的许多建议,但都不起作用。这是我的表格和结果的一个示例。我们看到,即使我在表格中选择了“p{}”,第一列也不在顶部。
\documentclass{article}
% Language setting
% Replace `english' with e.g. `spanish' to change the document language
\usepackage[english]{babel}
% Set page size and margins
% Replace `letterpaper' with`a4paper' for UK/EU standard size
\usepackage[letterpaper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
% Useful packages
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{multirow}
\usepackage{makecell}
\title{Your Paper}
\author{You}
\begin{document}
\begin{tabular}{|p{4cm}|p{5cm}|p{4cm}|}
\hline
\multicolumn{3}{|c|}{Title} \\
\hline
Programmation un simulateur complet du système &\makecell[l]{Oui/Non pour chaque item: \\ Corde \\ Actionneur d'entretien \\Capteur (optique) \\ Conditionnement des signaux \\ Mesure de la fréquence \\ Méthode d'accord \\ Contrôleur d'accord}& Chacun des éléments du système doit être simulé dans un module indépendant \\ \hline
\end{tabular}
\end{document}
答案1
命令\makecell
hah 选项用于水平(c
, l
,˛ r
)和垂直(b
, c
, r
)定位,因此在您的情况下makecell[tl]{Oui/Non ,,,}
应该执行您之后的操作。
正如我在评论中提到的,您可以考虑使用列表来处理第二列中的项目itemize
。除此之外,使用tblr
包tabularray
可以编写漂亮的表格。当然,您itemize
也可以在tabular
表格中使用,但格式itemize
不太简单:
\documentclass{article}
\usepackage[letterpaper,
vmargin=2cm, hmargin=3cm,
marginparwidth=1.75cm]{geometry}
\usepackage[english]{babel}
% Useful packages
\usepackage{enumitem}
\usepackage{ragged2e}
\usepackage{tabularray}
\UseTblrLibrary{varwidth}
\usepackage[colorlinks=true,
allcolors=blue]{hyperref} % had to be last in in preamble
\title{Your Paper}
\author{You}
\begin{document}
\begin{tblr}{hlines, vlines,
colspec = {Q[l,wd=4cm] Q[l, wd=5cm] Q[l, wd=4cm]},
stretch = -1,%<--- remove extra space above and below lists
measure = vbox,
}
\SetCell[c=3]{c} Title
& & \\
Programmation un simulateur complet du système
& Oui/Non pour chaque item:
\begin{itemize}[nosep, leftmargin=*]
\item Corde
\item Actionneur d'entretien
\item Capteur (optique)
\item Conditionnement des signaux
\item Mesure de la fréquence
\item Méthode d'accord
\item Contrôleur d'accord
\end{itemize}
& Chacun des éléments du système doit être
simulé dans un module indépendant \\
\end{tblr}
\end{document}
如果您出于某种原因不喜欢在列表中的项目前使用项目符号,或者将其更改为破折号等,则只需相应地更改“itemize”选项即可。例如:
\begin{itemize}[nosep, label={}, leftmargin=*]
没有子弹\begin{itemize}[nosep, label=-, leftmargin=*]
用破折号代替项目符号- ETC
附录:
关于OP评论:
问题有标签
longtable
,但其中没有提供关于此问题的任何信息,或者将其扩展至跨越多个页面是否存在问题。对于长表,开发了特殊的表包,如
longtable
,,包等。xltabular
longtblr
tabularray
对于长桌的设计至少应该了解以下内容:
- 表格是否有标题(在表格每个部分的顶部)
- 有多少行表格包含列标题,并且应该在每个表格部分的顶部重复
您的表格结构不太清晰(它是否有列标题,多列单元格的用途是什么)。
使用长表格时,您应该注意,长表格只能在行之间拆分。如果单元格内容有很多行(例如表格第二列中的列表),则可能导致表格部分下方出现大量空白。
使用 table 的长表示例
longtblr
为:
\documentclass{article}
\usepackage[letterpaper,
vmargin=2cm, hmargin=3cm,
marginparwidth=1.75cm]{geometry}
\usepackage[english]{babel}
\usepackage{lipsum} % dummy text filler
% Useful packages
\usepackage{enumitem}
\usepackage{ragged2e}
\usepackage{tabularray}
\UseTblrLibrary{varwidth}
\usepackage[colorlinks=true,
allcolors=blue]{hyperref} % had to be last in in preamble
\title{Your Paper}
\author{You}
\begin{document}
\maketitle
\lipsum[1-3]
\begingroup
\SetTblrStyle{caption}{font=\small}
\SetTblrStyle{caption-tag}{font=\bfseries}
%
\setlist[itemize]{nosep, topsep=0.5ex, leftmargin=*}
\begin{longtblr}[
caption = {From question is not evident, if your table should have caption or not.},
label = {tab:long},
]{rowhead = 1,
colspec = {Q[l,wd=4cm] Q[l, wd=5cm] Q[l, wd=4cm]},
stretch = -1,%<--- remove extra space above and below lists
measure = vbox,
row{1} = {font=\bfseries},
hlines, vlines,
}
column header
& column header
& column header \\
Programmation un simulateur complet du système
& Oui/Non pour chaque item:
\begin{itemize}
\item Corde
\item Actionneur d'entretien
\item Capteur (optique)
\item Conditionnement des signaux
\item Mesure de la fréquence
\item Méthode d'accord
\item Contrôleur d'accord
\end{itemize}
& Chacun des éléments du système doit être
simulé dans un module indépendant \\
Programmation un simulateur complet du système
& Oui/Non pour chaque item:
\begin{itemize}
\item Corde
\item Actionneur d'entretien
\item Capteur (optique)
\item Conditionnement des signaux
\item Mesure de la fréquence
\item Méthode d'accord
\item Contrôleur d'accord
\end{itemize}
& Chacun des éléments du système doit être
simulé dans un module indépendant \\
Programmation un simulateur complet du système
& Oui/Non pour chaque item:
\begin{itemize}
\item Corde
\item Actionneur d'entretien
\item Capteur (optique)
\item Conditionnement des signaux
\item Mesure de la fréquence
\item Méthode d'accord
\item Contrôleur d'accord
\end{itemize}
& Chacun des éléments du système doit être
simulé dans un module indépendant \\
\end{longtblr}
\endgroup
\end{document}
答案2
你不需要\makecell
。
\documentclass{article}
\usepackage{array}
\usepackage{tabularx} % for the second solution
\usepackage{booktabs} % for the third solution (with also tabularx)
\begin{document}
\begin{center}
\begin{tabular}{|>{\raggedright}p{4cm}|p{5cm}|>{\raggedright\arraybackslash}p{4cm}|}
\hline
\multicolumn{3}{|c|}{Title} \\
\hline
Programmation un simulateur complet du système &
Oui/Non pour chaque item: \newline
Corde \newline
Actionneur d'entretien \newline
Capteur (optique) \newline
Conditionnement des signaux \newline
Mesure de la fréquence \newline
Méthode d'accord \newline
Contrôleur d'accord &
Chacun des éléments du système doit être simulé dans un module indépendant \\
\hline
\end{tabular}
\bigskip
% this has no overfull
\begin{tabularx}{\textwidth}{|>{\raggedright}X | c | >{\raggedright\arraybackslash}X|}
\hline
\multicolumn{3}{|c|}{Title} \\
\hline
Programmation un simulateur complet du système &
\begin{tabular}[t]{@{}l@{}}
Oui/Non pour chaque item: \\
Corde \\
Actionneur d'entretien \\
Capteur (optique) \\
Conditionnement des signaux \\
Mesure de la fréquence \\
Méthode d'accord \\
Contrôleur d'accord
\end{tabular} &
Chacun des éléments du système doit être simulé dans un module indépendant \\
\hline
\end{tabularx}
\bigskip
\begin{tabularx}{\textwidth}{@{}>{\raggedright}X c >{\raggedright\arraybackslash}X@{}}
\toprule
\multicolumn{3}{c}{Title} \\
\midrule
Programmation un simulateur complet du système &
\begin{tabular}[t]{@{}l@{}}
Oui/Non pour chaque item: \\
Corde \\
Actionneur d'entretien \\
Capteur (optique) \\
Conditionnement des signaux \\
Mesure de la fréquence \\
Méthode d'accord \\
Contrôleur d'accord
\end{tabular} &
Chacun des éléments du système doit être simulé dans un module indépendant \\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
最后两个表格没有超出文本宽度。