多列 xltabular 中不需要的缩进,不兼容的包?

多列 xltabular 中不需要的缩进,不兼容的包?

更新:问题已经解决\shorthandoff{:}通过在环境之前和\shorthandon{:}之后添加xltabular(感谢 Jasper)。该问题是由于使用语言french自动在分号前添加空格而引起的。



这篇文章很长,所以我可以充分解释我遇到的问题,请随意纠正和编辑任何内容和/或评论。我会回答我知道答案的每一个问题。

TeX 信息:我使用 PDFLaTeX 编译,在 TeXMaker 下编写,版本是 3.141592653-2.6-1.40.25


xltabular所以我有一个使用命令制作的表格\mulicolumn。与许多其他用户一样,我观察到这个表格的第一行有一个不需要的小缩进。我已经浏览论坛一个星期了,却没有找到解决问题的方法。以下是我迄今为止对我的代码提出的问题/答案:

  • egreg 和 Karl Hagen 的解决方案这个问题:添加@{}和/或\dimexpr\tabcolsep。无论命令的长度或数量是多少,添加其中一个或另一个或两者均不会使我的文档缩进\tabcolsep。此外,还提供了相同的解决方案这里. 这些都不能解决问题。
  • 徐旺的疑问和沃纳的解答这个问题:在表格行的开头添加一个\noindent。我这边的文档没有任何变化。
  • 所有解决方案这个问题\noindent之前\begin{xltabular}flushleft环境;;\setlength{\parindent}{0pt}等等:也没有变化。
  • 来自\ignorespaces这里, 不用找了。

因此我开始编写我的 MWE,理论上只使用所需的包,向您展示我的最佳尝试以及迄今为止尝试过的内容,但输出略有不同,因为没有出现缩进:

\documentclass[11pt,fleqn,french]{report}

\usepackage{geometry}                               
\geometry{a4paper}

\usepackage[utf8]{inputenc}
\usepackage[OT1]{fontenc} 

\usepackage{makecell,hhline,longtable}
\usepackage[longtable]{multirow}

\usepackage{xltabular}
\renewcommand\tabularxcolumn[1]{m{#1}}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%

\begin{document}

\begin{center}
\begin{xltabular}{0.75\linewidth}{|c|L{40mm}@{}L{2mm}L{15mm}|}
\hhline{|t:====:t|}
\multicolumn{1}{|c|}{\textbf{Part}} &   \multicolumn{3}{c|}{\textbf{Data}}  \endfirsthead \hline
Material \textit{$\alpha$}          &   Mass\newline Volume\newline Density\newline Proportion  &   :\newline :\newline :\newline : &   \textit{$m_{\alpha}$}\newline \textit{$v_{\alpha}$}\newline \textit{$\rho_{\alpha}$}\newline \textit{$p_{\alpha}$}\\ \hline
Cylinder                            &   Mass\newline Volume\newline Density                     &   :\newline :\newline :           &   \textit{$m_{cyl}$}\newline \textit{$v_{cyl}$}\newline \textit{$\rho_{cyl}$}\\
\hhline{|b:====:b|}
\end{xltabular}
\end{center}

\end{document}

工作正常


为了不污染 MWE 1.0,我减少了软件包的数量,我首先想到的是,问题出在其中一些软件包之间的不兼容性。因此,这是我的 MWE 2.0,其中包含我使用和需要的所有软件包,以及它的结果:

\PassOptionsToPackage{x11names}{xcolor}
\documentclass[11pt,fleqn,french]{report}

\usepackage{geometry}                               
\geometry{a4paper}

\usepackage{background}
\backgroundsetup{contents=MWE}

\usepackage[utf8]{inputenc}                     
\usepackage[OT1]{fontenc}
\usepackage{pdflscape}
\usepackage{rotating}
\usepackage{booktabs,bigstrut}
\usepackage[parfill]{parskip}                   
\usepackage{graphicx,float}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{fancyhdr} 
\usepackage{epstopdf}
\usepackage{lipsum}
\usepackage{babel,csquotes,xpatch}
\usepackage{ifthen}
\usepackage{array}
\usepackage{textcomp}
\usepackage{hyperref}
\usepackage{nomencl}
\usepackage[toc,acronym]{glossaries}
\usepackage[backend=biber,style=numeric-comp,sorting=none]{biblatex}
\usepackage{microtype}
\usepackage{caption,subfloat,subcaption}
\usepackage{wrapfig}


\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfmodule{plot}
\usepgfplotslibrary{fillbetween}

\usepackage{tikz}
\usetikzlibrary{calc,shapes,decorations.pathmorphing,backgrounds,plotmarks,3d,patterns}

\usepackage{makecell,hhline,longtable}
\usepackage[longtable]{multirow}

\usepackage[column=0]{cellspace}
\newcommand{\imageborder}{2pt}
\setlength\cellspacetoplimit{\imageborder}
\setlength\cellspacebottomlimit{\imageborder}

\usepackage[export]{adjustbox}
\usepackage{xltabular}
\renewcommand\tabularxcolumn[1]{m{#1}}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}}


\begin{document}

\begin{center}
\begin{xltabular}{0.75\linewidth}{|c|L{40mm}L{2mm}L{15mm}|}
\hhline{|t:====:t|}
\multicolumn{1}{|c|}{\textbf{Part}} &   \multicolumn{3}{c|}{\textbf{Data}}  \endfirsthead \hline
Material \textit{$\alpha$}          &   Mass\newline Volume\newline Density\newline Proportion      &   :\newline :\newline :\newline : &   \textit{$m_{\alpha}$}\newline \textit{$v_{\alpha}$}\newline \textit{$\rho_{\alpha}$}\newline \textit{$p_{\alpha}$}\\ \hline
Cylinder                            &   Mass\newline Volume\newline Density                         &   :\newline :\newline :           &   \textit{$m_{cyl}$}\newline \textit{$v_{cyl}$}\newline \textit{$\rho_{cyl}$}\\
\hhline{|b:====:b|}
\end{xltabular}
\end{center}

\end{document}

工作不顺利

如您所见,表格中每行的第一个“子行”上都有明显的缩进。我第一次尝试的是 3 列表格,因此包括\multicolumn{2}{}{}用于数据的 ,并且缩进应用于“:”和变量。我猜这个问题出现在 的第二列\multicolumn,但我不明白原因。

任何帮助都将非常感谢,谢谢您的时间和考虑。

答案1

重现您的问题的 MWE 是(我稍微简化了您的代码):

\documentclass[11pt,french]{report}
\usepackage[utf8]{inputenc}
\usepackage[OT1]{fontenc} 

\usepackage[a4paper]{geometry}                               

\usepackage{babel}

\usepackage{xltabular}
\usepackage{hhline}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}

\begin{document}

\begin{center}
\begin{xltabular}{0.75\linewidth}{|c|L{40mm}@{}L{2mm}L{15mm}|}
    \hhline{|t:====:t|}
    \textbf{Part} 
        & \multicolumn{3}{c|}{\textbf{Data}} \endfirsthead \hline
    Material $\alpha$
        & Mass\newline Volume\newline Density\newline Proportion  
        & :\newline :\newline :\newline : 
        & $m_{\alpha}$\newline $v_{\alpha}$\newline $\rho_{\alpha}$\newline $p_{\alpha}$\\ \hline
    Cylinder
        & Mass\newline Volume\newline Density 
        & :\newline :\newline :
        & $m_{cyl}$\newline $v_{cyl}$\newline $\rho_{cyl}$\\
    \hhline{|b:====:b|}
\end{xltabular}
\end{center}

\end{document}

在此处输入图片描述

第一行冒号前面有空格的原因是,如果将语言加载,babel包会在冒号前添加这个空格。french不同的方式来解决这个问题。一种解决方案是将\shorthandoff{:}相关代码放在\shorthandon{:}其后面,以暂时停用此行为。或者,您可以\NoAutoSpacing在要停用默认间距机制的相关单元格的开头添加:

\documentclass[11pt,french]{report}
\usepackage[utf8]{inputenc}
\usepackage[OT1]{fontenc} 

\usepackage[a4paper]{geometry}                               

\usepackage{babel}

\usepackage{xltabular}
\usepackage{hhline}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}

\begin{document}

\begin{center}
\begin{xltabular}{0.75\linewidth}{|c|L{40mm}@{}L{2mm}L{15mm}|}
    \hhline{|t:====:t|}
    \textbf{Part} 
        & \multicolumn{3}{c|}{\textbf{Data}} \endfirsthead \hline
    Material $\alpha$
        & Mass\newline Volume\newline Density\newline Proportion  
        & \NoAutoSpacing :\newline :\newline :\newline : 
        & $m_{\alpha}$\newline $v_{\alpha}$\newline $\rho_{\alpha}$\newline $p_{\alpha}$\\ \hline
    Cylinder
        & Mass\newline Volume\newline Density 
        & \NoAutoSpacing :\newline :\newline :
        & $m_{cyl}$\newline $v_{cyl}$\newline $\rho_{cyl}$\\
    \hhline{|b:====:b|}
\end{xltabular}
\end{center}

\end{document}

在此处输入图片描述

相关内容