表格 - 列宽大于 \textwidth

表格 - 列宽大于 \textwidth

我尝试使用 \textwidth 将表格精确地放在边距之间。不幸的是,当我使用 \textwidth 时,我的表格太大了,我不知道为什么。(我的代码是针对 django 模板的,但我也在 TexStudio 中检查它)。

我正在尝试制作这样的表格(请注意,18cm 是我的 \textwidth,因为我有 a4paper 并且左右边距 = 1,5cm)

    \begin{tabular}{|p{18cm}|}
    \hline
    aaa\\
    \hline
    \end{tabular}


\begin{tabular}{|p{.08\textwidth}|p{.08\textwidth}|p{.08\textwidth}|p{.08\textwidth}|p{.16\textwidth}|p{.2\textwidth}|p{.2\textwidth}|p{.12\textwidth}|}
    
\hline
    PWM & O2 & CO  & CO2 & Temp. spalin & Ciśni. gaz przed EV & Ciśn gazu ze EV & Prąd jon. \\ \hline
    -   & \% & ppm & \%  & oC           & mbar                & mbar            & microA    \\ \hline
    &    &     &     &              &                     &                 &           \\ \hline
\end{tabular}

所有宽度总和为 1,但表格太宽(当我以厘米为单位指定宽度时,结果相同)。在序言中,我将其用于整个文档,但无论是否注释掉它都无关紧要:

\setlength{\parindent}{0cm}

全部序言:

\documentclass[8pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[left=1.50cm, right=1.50cm, top=1.50cm, bottom=1.50cm, width=18cm]{geometry}
\usepackage{showframe}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage{titlesec}
\usepackage{hyperref}
\hypersetup{
    colorlinks,
    citecolor=black,
    filecolor=black,
    linkcolor=black,
    urlcolor=black
}

\titleformat{\section}
{\normalfont\Large\bfseries\filcenter}{\thesection}
{0em}{}
% \usepackage{roboto}
% \usepackage[sfdefault, thin]{roboto}

\setlength{\parindent}{0cm}
\newcommand{\mySmallSkip}{\hspace*{10mm}}
\pagestyle{fancy}
%\usepackage{showframe} 
\fancyhf{}
\renewcommand{\footrulewidth}{0.4pt}% default is 0pt
\textheight=160mm

我的表格如下: 在此处输入图片描述

答案1

p列类型的参数说明可用的水平空间,而不是全部的列占用的水平空间。由于tabular代码中的第二个环境包含 8 列和 9 个竖线符号,因此其总宽度为。对于和,1\textwidth+16\tabcolsep+9\arrayrulewidth默认值分别为6pt和,超出的宽度为-- 大约 1.4 英寸,或约 3.5 厘米。哎呀!0.4pt\tabcolsep\arrayrulewidth\textwidth99.6pt

你写了,

我正在尝试使用 让表格精确地位于边距之间\textwidth

然后,一定要使用tabularxtabular*环境并将其宽度设置为\textwidth

以下屏幕截图中的第一个表使用tabularx列类型,并对全部 8 列使用列类型的居中版本X。它计算相对的列宽如下。首先,注意 8 列的宽度必须满足 2:2:2:2:4:5:5:3 的比例。其次,相对列宽必须等于 8,即 X 类型的列数。因此,25x=8,或 x=8/25=32/100。因此,相对列宽计算为 0.64(4 倍)、1.28、1.6(2 倍)和 0.96。

虽然第一个表格使用了\hline指令和大量垂直条(实际上有 9 条!),但第二个表格表明,只需摆脱所有垂直条并使用间距适当的替代方案,就可以轻松实现巨大的美学改善\hline

由于自动换行实际上似乎并不需要,因此使用 确实tabularx是一种过度杀伤。最后一张表显示了如何在tabular*具有 8 个 LaTeX 基本c列类型实例的环境中获得几乎相同的输出。这难道不比*{8}{c}容易得多吗*{4}{C{0.64}} C{1.28} *{2}{C{1.6}} C{0.96}

无论您做什么,请使用诸如\mhchem排版化合物名称的包和siunitx排版科学单位的包。

在此处输入图片描述

\documentclass[a4paper]{article} % A4: 21cm wide
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[margin=1.5cm]{geometry}
\usepackage{tabularx,mhchem,siunitx,booktabs}
\newcolumntype{C}[1]{>{\centering\arraybackslash\hsize=#1\hsize}X}

\begin{document}
\setlength\tabcolsep{4pt} % for the first two tables

\noindent
\begin{tabularx}{\textwidth}{| *{4}{C{0.64}|} C{1.28}| *{2}{C{1.6}|} C{0.96} |}
\hline
PWM & \ce{O2} & \ce{CO} & \ce{CO2} & Temp.\ spalin & Ciśni.\ gaz przed EV & Ciśn gazu ze EV & Prąd jon. \\
\hline
-- & \% & ppm & \%  & \si{\celsius} & \si{\milli\bar} & \si{\milli\bar} & \si{\micro\ampere} \\
\hline
\end{tabularx}

\vspace{1cm}
\noindent
\begin{tabularx}{\textwidth}{@{} *{4}{C{0.64}} C{1.28} *{2}{C{1.6}} C{0.96} @{}}
\toprule
PWM & \ce{O2} & \ce{CO} & \ce{CO2} & Temp.\ spalin & Ciśni.\ gaz przed EV & Ciśn gazu ze EV & Prąd jon. \\
\midrule
-- & \% & ppm & \%  & \si{\celsius} & \si{\milli\bar} & \si{\milli\bar} & \si{\micro\ampere} \\
\bottomrule
\end{tabularx}

\vspace{1cm}
\setlength\tabcolsep{0pt}
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} *{8}{c} }
\toprule
PWM & \ce{O2} & \ce{CO} & \ce{CO2} & Temp.\ spalin & Ciśni.\ gaz przed EV & Ciśn gazu ze EV & Prąd jon. \\
\midrule
-- & \% & ppm & \%  & \si{\celsius} & \si{\milli\bar} & \si{\milli\bar} & \si{\micro\ampere} \\
\bottomrule
\end{tabular*}

\end{document}

答案2

这是表格的两个版本。在这两个版本中,我都使用了siunitx单位包和chemformula化学式包。在第一个表中,我已更正列宽计算以考虑\tabcolsep\arrayrulewidth。在第二个表中,我使用了简单l类型列,因为即使不使用类型列,表格也足够窄以适合文本宽度p

在此处输入图片描述

\documentclass[a4paper]{article} % removed invalid 8pt option
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[margin=1.50cm]{geometry} % summarized left=1.50cm, right=1.50cm, top=1.50cm, bottom=1.50cm to margin=1.50cm
\usepackage{showframe}
\usepackage{siunitx} % used for \si{...} command
\usepackage{chemformula} % added for \ch{...} command
\usepackage{calc}

\setlength{\parindent}{0cm}

\begin{document}


\begin{tabular}{|*{4}{p{.08\textwidth-2\tabcolsep-\arrayrulewidth}|}
                p{.16\textwidth-2\tabcolsep-\arrayrulewidth}|
                p{.2\textwidth-2\tabcolsep-\arrayrulewidth}|
                p{.2\textwidth-2\tabcolsep-\arrayrulewidth}|
                p{.12\textwidth-2\tabcolsep-2\arrayrulewidth}|}
    
\hline
    PWM & \ch{O2}       & CO       & \ch{CO2} & Temp. spalin   & Ciśni. gaz przed EV  & Ciśn gazu ze EV      & Prąd jon.           \\ \hline
    -   & \si{\percent} & \si{ppm} & \%       & \si{\celsius}  & \si{mbar}            & \si{mbar}            & \si{\micro\ampere}  \\ \hline
        &               &          &          &                &                      &                      &                     \\ \hline
\end{tabular}

\begin{tabular}{|l|l|l|l|l|l|l|l|}
    
\hline
    PWM & \ch{O2}       & CO       & \ch{CO2} & Temp. spalin   & Ciśni. gaz przed EV  & Ciśn gazu ze EV      & Prąd jon.           \\ \hline
    -   & \si{\percent} & \si{ppm} & \%       & \si{\celsius}  & \si{mbar}            & \si{mbar}            & \si{\micro\ampere}  \\ \hline
        &               &          &          &                &                      &                      &                     \\ \hline
\end{tabular}

\end{document}

相关内容