areaset 和 sidewaystable 与 tabularx 之间的冲突

areaset 和 sidewaystable 与 tabularx 之间的冲突

我对一张大表格有问题,最终我可以通过减少序言和注释掉一些行来缩小范围。

问题:

我有一个像这样定义的表(请参阅下面的 MWE 以获取完整LaTeX代码来重现我的问题!):

\begin{sidewaystable}[htbp]
\caption{caption}
\centering

\begingroup

\setlength{\tabcolsep}{2pt}
\footnotesize
\newcolumntype{L}{>{\raggedright\arraybackslash}X}


\begin{tabularx}{\textwidth}{|>{\raggedright\arraybackslash}p{2.0cm}*{14}{|L}|}
\hline
  & & & & & & & & & & & & & \\
  \multicolumn{1}{|r|}{Z}    & \multicolumn{3}{X|}{A} & \multicolumn{2}{X|}{{B}} & \multicolumn{1}{X|}{C} & \multicolumn{2}{X|}{D} & \multicolumn{1}{X|}{E} & \multicolumn{1}{X|}{F} & \multicolumn{1}{X|}{G} & \multicolumn{1}{X|}{H} & \multicolumn{1}{X|}{I} & \multicolumn{1}{X|}{J} \bigstrut\\
 \hline

  \hline
\end{tabularx}
\endgroup
\end{sidewaystable}%

截屏:

您可以在左侧看到我期望的样子(列宽相等),在右侧看到它的样子。

问题

解决方法

我对 LaTeX 的了解不足以解决这个问题,但以下方面似乎是相关的:

  • TeXLive 2011可以工作,但升级后TeXLive 2014它就不再工作了,所以似乎有一个变化导致pdfLaTeX输出发生变化。
  • 如果我删除该行\areaset[8mm]{15.5cm}{25.2cm},它似乎可以工作,因此区域集和表定义之间存在冲突
  • 我在同一个文件中还有其他一些以类似方式设置的表,它们确实不是造成任何问题

最小工作示例:

\documentclass[11pt, a4paper,  %Schriftgröße 11Pkt, Papierformat DIN A4  
twoside, autooneside, %doppelseitiges Layout, automatische Anpassung der Kopfzeile bei einseitigem Layout
headinclude, footinclude=false, %Parameter für Satzspiegelberechnung: Kopfzeile miteinbeziehen, Fußzeile ausschließen
%tocleft, listsleft, % Verzeichnisse ohne Einzug
numbers=noenddot, %kein Punkt hinter Überschriftennummern - plötzlich waren sie da in rev 74, vermutlich nach update von TeXLive
toc=flat, tocdepth=
listof=totoc, bibliography=totoc, %TOC enthält Abb.- und Tab.-Verz. und Literaturverz.
captions=tableheading, captions=nooneline, headsepline, parskip=half, %Tabellenüberschrift über Tabellen, Trennlinine unter Kopfzeile, (halber) Abstand zwischen Absätzen
footnotes=multiple %, draft
]{scrbook}


%%%% SEITENFORMAT %%%%
\areaset[8mm]{15.5cm}{25.2cm} %Explizite Festlegung der Bindekorrektur [] und des Satzspiegels {Breite}{Höhe}
%\raggedbottom

%%%% {PACKAGES} %%%%
\usepackage[UKenglish, ngerman]{babel} %Sprachpakete Brit. Englisch, Deutsch Neue Rechtschreibung
\usepackage[latin1]{inputenc}
\usepackage[TS1, T1]{fontenc} %Kodierungen für Text 1 und Text Symbols
\usepackage[ngerman, iso]{isodate} %Formatierung von Datumsangaben nach ISO
\usepackage{pdflscape} %erlaubt Setzen von Einzelseiten im Querformat
\usepackage{xspace}
%\usepackage[]{ragged2e} % kein Problem bei Tabellenspalten mit >{\raggedright}, siehe http://www.tug.org/TUGboat/tb28-3/tb90hoeppner.pdf Option "raggedrightboxes" funktioniert leider nicht, da dann auch captions raggedright gesetzt werden und neue Zeilen in captions falsch eingerückt sind


%Pakete für Zusatzfunktionen
\usepackage{hyperref} %Automatisches Verlinken der PDF-Datei
\usepackage[pdftex]{graphicx} %Einbinden von Bildern und Grafiken
\usepackage{color} %Verwendung von Farbe in Text und Grafiken
%\usepackage{tikz} %Graphiken mit TikZ/PGF -> http://www.ifi.uio.no/it/latex-links/pgfmanual.pdf


%Pakete zur Verwendung von Tabellen
\usepackage{array} 
\usepackage{tabularx} 
\usepackage{longtable}
\usepackage{booktabs} %unterschiedliche Linienstärken
\usepackage{dpfloat} %für Tabellen über Doppelseiten
\usepackage{collcell} % für Definition von Spaltenformaten

\usepackage[]{rotating} % Drehen von Tabellen, Bildern, etc. ggf. Option figuresleft oder -right

\usepackage[round-mode=off, round-integer-to-decimal, round-precision=4,
    table-format = 1.2, 
    table-number-alignment=center,
    round-integer-to-decimal,
    output-decimal-marker={,},
    abbreviations=false % sonst wird \ps als Einheit definiert
    ]{siunitx} % für Einheiten (bisher nicht verwendet) und für das Formatieren von Zahlen in Tabellenspalten

%Tabellenformate (erf. array-Paket und siunitx)
%   \newcolumntype{X}{>{}S[round-precision=4, table-format=1.4]<{}}
    \newcolumntype{Y}{>{}S[round-precision=3, table-format=2.3]<{}}

    \newcolumntype{Z}{>{}S[round-precision=1, table-format=1.1]<{}} 
    \newcolumntype{A}{>{}S[round-precision=2, table-format=1.2]<{}}
    \newcolumntype{B}{>{}S[round-precision=3, table-format=1.3]<{}}
    \newcolumntype{E}{>{}S[round-precision=2, table-format=2.2]<{}}
    \newcolumntype{F}{>{}S[round-precision=3, table-format=2.3]<{}}
    \newcolumntype{J}{>{}S[round-precision=1, table-format=3.1]<{}}
    \newcolumntype{K}{>{}S[round-precision=2, table-format=3.2]<{}}

    \newcolumntype{H}{>{\lrbox0}c<{\endlrbox}@{}} %Spalte ausblenden, wird aber trotzdem von LaTeX bearbeitet, Quelle: http://tex.stackexchange.com/questions/16604/easiest-way-to-delete-a-column

%Formatierungen für Tabellen Einfluss der Parameter SDF
\usepackage{bigstrut}
\usepackage{calc}

\newcommand{\TabSchrift}{\small} %Schriftgröße  Tabellen, wird im Anhang auf footnotesize verkleinert

%\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}




\begin{document}

\begin{sidewaystable}[htbp]
\caption{caption}
\centering

\begingroup

\setlength{\tabcolsep}{2pt}
\footnotesize
\newcolumntype{L}{>{\raggedright\arraybackslash}X}


\begin{tabularx}{\textwidth}{|>{\raggedright\arraybackslash}p{2.0cm}*{14}{|L}|}
\hline
  & & & & & & & & & & & & & \\
  \multicolumn{1}{|r|}{Z}    & \multicolumn{3}{X|}{A} & \multicolumn{2}{X|}{{B}} & \multicolumn{1}{X|}{C} & \multicolumn{2}{X|}{D} & \multicolumn{1}{X|}{E} & \multicolumn{1}{X|}{F} & \multicolumn{1}{X|}{G} & \multicolumn{1}{X|}{H} & \multicolumn{1}{X|}{I} & \multicolumn{1}{X|}{J} \bigstrut\\
 \hline

  \hline
\end{tabularx}
\endgroup
\end{sidewaystable}%
\end{document}

答案1

问题似乎出在\textheightsidewaystabletabularx环境以及第二行中的 sX中的列类型的组合上。\multicolumn

如果我自己计算列宽,它对我来说是可行的:

\documentclass[headinclude]{scrbook}
\areaset[8mm]{15.5cm}{25.2cm}

\usepackage{rotating}
\usepackage{bigstrut}

\usepackage{tabularx}
  \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

\newlength\mycolwidth

% packages to show the page layout
\usepackage{layout}
\usepackage{showframe}

\begin{document}
\layout

\begin{sidewaystable}
\centering
\setlength{\tabcolsep}{2pt}
\setlength\mycolwidth{\dimexpr(\textwidth-2cm-30\tabcolsep-15\arrayrulewidth)/14\relax}
\footnotesize
\begin{tabular}{|>{\raggedright\arraybackslash}p{2.0cm}|*{14}{L{\mycolwidth}|}}
\hline
&&&&&&&&&&&&&&\\
\multicolumn{1}{|r|}{Z}    
  &\multicolumn{3}{L{3\mycolwidth}|}{A} 
  &\multicolumn{2}{L{2\mycolwidth}|}{{B}} 
  &\multicolumn{1}{L{\mycolwidth}|}{C} 
  &\multicolumn{2}{L{2\mycolwidth}|}{D} 
  &\multicolumn{1}{L{\mycolwidth}|}{E} 
  &\multicolumn{1}{L{\mycolwidth}|}{F} 
  &\multicolumn{1}{L{\mycolwidth}|}{G} 
  &\multicolumn{1}{L{\mycolwidth}|}{H} 
  &\multicolumn{1}{L{\mycolwidth}|}{I} 
  &\multicolumn{1}{L{\mycolwidth}|}{J\bigstrut}
  \\
 \hline
\end{tabular}
\end{sidewaystable}%
\end{document}

请注意,结果\textheight低于,25.2cm因为考虑\areaset了选项headinclude

在此处输入图片描述


tabularx但如果结果\textheight低于,我可以使用656pt

\documentclass{scrbook}
\areaset{\textwidth}{655pt}
%\areaset{\textwidth}{656pt}

\usepackage{rotating}
\usepackage{bigstrut}

\usepackage{tabularx}
  \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

% packages to show the page layout
\usepackage{layout}
\usepackage{showframe}

\begin{document}
\layout

\begin{sidewaystable}
\centering
\setlength{\tabcolsep}{2pt}
\footnotesize
\begin{tabularx}{\textwidth}{|>{\raggedright\arraybackslash}p{2.0cm}|*{14}{X|}}
\hline
&&&&&&&&&&&&&&\\
\multicolumn{1}{|r|}{Z}    
  &\multicolumn{3}{X|}{A} 
  &\multicolumn{2}{X|}{{B}} 
  &\multicolumn{1}{X|}{C} 
  &\multicolumn{2}{X|}{D} 
  &\multicolumn{1}{X|}{E} 
  &\multicolumn{1}{X|}{F} 
  &\multicolumn{1}{X|}{G} 
  &\multicolumn{1}{X|}{H} 
  &\multicolumn{1}{X|}{I} 
  &\multicolumn{1}{X|}{J\bigstrut}
  \\
 \hline
\end{tabularx}
\end{sidewaystable}%
\end{document}

book请注意和存在同样的问题geometry

\documentclass{book}
\usepackage{geometry}
\geometry{textheight=655pt}
%\geometry{textheight=656pt}

我认为这只是桌子的问题。

\documentclass[margin=5pt]{standalone}

\usepackage{tabularx}
  \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

\newcommand\tabularwidth{656pt}

\begin{document}

\begin{tabularx}{\tabularwidth}{|>{\raggedright\arraybackslash}p{2.0cm}|*{14}{X|}}
\hline
&&&&&&&&&&&&&&\\
\multicolumn{1}{|r|}{Z}    
  &\multicolumn{3}{X|}{A} 
  &\multicolumn{2}{X|}{{B}} 
  &\multicolumn{1}{X|}{C} 
  &\multicolumn{2}{X|}{D} 
  &\multicolumn{1}{X|}{E} 
  &\multicolumn{1}{X|}{F} 
  &\multicolumn{1}{X|}{G} 
  &\multicolumn{1}{X|}{H} 
  &\multicolumn{1}{X|}{I} 
  &\multicolumn{1}{X|}{J}
  \\
 \hline
\end{tabularx}

\end{document}

结果是

在此处输入图片描述

如果我改变表格的宽度

\newcommand\tabularwidth{656pt}

我明白了

在此处输入图片描述

答案2

我只是重新整理了你的代码:在序言中移动新的列类型(它属于哪里),删除组和支柱,这里是 MWE:

\documentclass{article}
    \usepackage{tabularx,rotating}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
    \usepackage{caption}
\captionsetup{font = small}

\begin{document}
    \begin{sidewaystable}[htbp]
    \centering
\setlength{\tabcolsep}{2pt}
\footnotesize
    \caption{caption}
\begin{tabularx}{\textwidth}{|>{\raggedright\arraybackslash}p{2.0cm}|*{14}{L|}}
    \hline
    &   &   &   &   &   &   &   &   &   &   &   &   &   &           \\
\multicolumn{1}{|r|}{Z}    
    &   \multicolumn{3}{X|}{A} 
        &   \multicolumn{2}{X|}{{B}} 
            &   \multicolumn{1}{X|}{C} 
                &   \multicolumn{2}{X|}{D} 
                    &   \multicolumn{1}{X|}{E} 
                        &   \multicolumn{1}{X|}{F} 
                            &   \multicolumn{1}{X|}{G} 
                                & \multicolumn{1}{X|}{H} 
                                    & \multicolumn{1}{X|}{I} 
                                        & \multicolumn{1}{X|}{J}    \\
 \hline
\end{tabularx}
    \end{sidewaystable}%
\end{document}

答案3

在此处输入图片描述

主要错误在于 中的尺寸设置\areaset。如果您查看 中的表 2.2Coma 脚本文档(第 10 页),您可以挑选一些适合您的正确“类型区域值”。使用\areaset[8mm]{13.125cm}{18.563cm}上面表格中的值查看以下 MWE:

\documentclass[11pt, a4paper,  %Schriftgröße 11Pkt, Papierformat DIN A4  
twoside, autooneside, %doppelseitiges Layout, automatische Anpassung der Kopfzeile bei einseitigem Layout
headinclude, footinclude=false, %Parameter für Satzspiegelberechnung: Kopfzeile miteinbeziehen, Fußzeile ausschließen
%tocleft, listsleft, % Verzeichnisse ohne Einzug
numbers=noenddot, %kein Punkt hinter Überschriftennummern - plötzlich waren sie da in rev 74, vermutlich nach update von TeXLive
toc=flat, tocdepth=
listof=totoc, bibliography=totoc, %TOC enthält Abb.- und Tab.-Verz. und Literaturverz.
captions=tableheading, captions=nooneline, headsepline, parskip=half, %Tabellenüberschrift über Tabellen, Trennlinine unter Kopfzeile, (halber) Abstand zwischen Absätzen
footnotes=multiple %, draft
]{scrbook}


%%%% SEITENFORMAT %%%%
\areaset[8mm]{13.125cm}{18.563cm} %Explizite Festlegung der Bindekorrektur [] und des Satzspiegels {Breite}{Höhe}
%\raggedbottom

%%%% {PACKAGES} %%%%
\usepackage[UKenglish, ngerman]{babel} %Sprachpakete Brit. Englisch, Deutsch Neue Rechtschreibung
\usepackage[latin1]{inputenc}
\usepackage[TS1, T1]{fontenc} %Kodierungen für Text 1 und Text Symbols
\usepackage[ngerman, iso]{isodate} %Formatierung von Datumsangaben nach ISO
\usepackage{pdflscape} %erlaubt Setzen von Einzelseiten im Querformat
\usepackage{xspace}
%\usepackage[]{ragged2e} % kein Problem bei Tabellenspalten mit >{\raggedright}, siehe http://www.tug.org/TUGboat/tb28-3/tb90hoeppner.pdf Option "raggedrightboxes" funktioniert leider nicht, da dann auch captions raggedright gesetzt werden und neue Zeilen in captions falsch eingerückt sind


%Pakete für Zusatzfunktionen
\usepackage{hyperref} %Automatisches Verlinken der PDF-Datei
\usepackage[pdftex]{graphicx} %Einbinden von Bildern und Grafiken
\usepackage{color} %Verwendung von Farbe in Text und Grafiken
%\usepackage{tikz} %Graphiken mit TikZ/PGF -> http://www.ifi.uio.no/it/latex-links/pgfmanual.pdf


%Pakete zur Verwendung von Tabellen
\usepackage{array} 
\usepackage{tabularx} 
\usepackage{longtable}
\usepackage{booktabs} %unterschiedliche Linienstärken
\usepackage{dpfloat} %für Tabellen über Doppelseiten
\usepackage{collcell} % für Definition von Spaltenformaten

\usepackage[]{rotating} % Drehen von Tabellen, Bildern, etc. ggf. Option figuresleft oder -right

\usepackage[round-mode=off, round-integer-to-decimal, round-precision=4,
    table-format = 1.2, 
    table-number-alignment=center,
    round-integer-to-decimal,
    output-decimal-marker={,},
    abbreviations=false % sonst wird \ps als Einheit definiert
    ]{siunitx} % für Einheiten (bisher nicht verwendet) und für das Formatieren von Zahlen in Tabellenspalten

%Tabellenformate (erf. array-Paket und siunitx)
%   \newcolumntype{X}{>{}S[round-precision=4, table-format=1.4]<{}}
    \newcolumntype{Y}{>{}S[round-precision=3, table-format=2.3]<{}}

    \newcolumntype{Z}{>{}S[round-precision=1, table-format=1.1]<{}} 
    \newcolumntype{A}{>{}S[round-precision=2, table-format=1.2]<{}}
    \newcolumntype{B}{>{}S[round-precision=3, table-format=1.3]<{}}
    \newcolumntype{E}{>{}S[round-precision=2, table-format=2.2]<{}}
    \newcolumntype{F}{>{}S[round-precision=3, table-format=2.3]<{}}
    \newcolumntype{J}{>{}S[round-precision=1, table-format=3.1]<{}}
    \newcolumntype{K}{>{}S[round-precision=2, table-format=3.2]<{}}

    \newcolumntype{H}{>{\lrbox0}c<{\endlrbox}@{}} %Spalte ausblenden, wird aber trotzdem von LaTeX bearbeitet, Quelle: http://tex.stackexchange.com/questions/16604/easiest-way-to-delete-a-column

%Formatierungen für Tabellen Einfluss der Parameter SDF
\usepackage{bigstrut}
\usepackage{calc}

\newcommand{\TabSchrift}{\small} %Schriftgröße  Tabellen, wird im Anhang auf footnotesize verkleinert

%\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}




\begin{document}

\begin{sidewaystable}[htbp]
\caption{caption}
\centering

\begingroup

\setlength{\tabcolsep}{2pt}
\footnotesize
\newcolumntype{L}{>{\raggedright\arraybackslash}X}


\begin{tabularx}{\textwidth}{|>{\raggedright\arraybackslash}p{2.0cm}*{14}{|L}|}
\hline
  & & & & & & & & & & & & & \\
  \multicolumn{1}{|r|}{Z}    & \multicolumn{3}{X|}{A} & \multicolumn{2}{X|}{{B}} & \multicolumn{1}{X|}{C} & \multicolumn{2}{X|}{D} & \multicolumn{1}{X|}{E} & \multicolumn{1}{X|}{F} & \multicolumn{1}{X|}{G} & \multicolumn{1}{X|}{H} & \multicolumn{1}{X|}{I} & \multicolumn{1}{X|}{J} \bigstrut\\
 \hline

  \hline
\end{tabularx}
\endgroup
\end{sidewaystable}%
\end{document} 

相关内容