Wie kann ich Zeilenumbrüche/mehrere Zeilen in der Überschrift meiner Anfängertabelle aktivieren?

Wie kann ich Zeilenumbrüche/mehrere Zeilen in der Überschrift meiner Anfängertabelle aktivieren?

Wie kann ich Zeilenumbrüche/mehrere Zeilen in der Überschrift meiner Anfängertabelle aktivieren?

\caption{this is my first table's captive caption}

Ich möchte, dass die Überschrift ungefähr so ​​aussieht:

das ist mein Erster

Captive-Beschriftung der Tabelle

Wie?

\documentclass{article}
\usepackage{tabulary}
\usepackage{threeparttable}
\usepackage{array}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{pbox}
\usepackage{lipsum}
\usepackage[utf8]{inputenc}\usepackage{textcomp}
\renewcommand{\arraystretch}{1.2}
\sisetup{round-mode=places,round-precision=1, add-decimal-zero=true, add-integer-zero=true, round-integer-to-decimal}

\begin{document}

\lipsum[1]


\begin{table}
\begin{threeparttable}
\caption{this is my first table's captive caption}
\begin{tabulary}{\textwidth}{@{}*{2}{L}*{6}{S[table-format=3.2]}@{}} \toprule
× & TOTALLY bla percentage of bla & {1000} & {2000} & {3000} & 
\multicolumn{1}{c}{\begin{tabular}{@{}c@{}}Bonjour\tabularnewline monde!\end{tabular}} &
 {5000} & {6000\tnote{1}}\\ \midrule
% × & TOTALLY bla percentage of bla & {1000} & {2000} & {3000} & \multirow{2}*{4000 apples and pears \\ and whatnot} & {5000} & {6000\tnote{1}}\\ \midrule
DDD 1 & 47.6 & 29.1 & 1.0 & 0.2 & 1.9 & 15.2 & 0.0\\
UUU & 24.8 & 10.8 & 6.4 & 0.0 & 3.2 & 4.5 & 0.0\\
× & × & × & × & × & × & × & ×\\
Unweighted average: & × & × & × & × & × & × & ×\\
BBB & 33.8 & 11.3 & 9.1 & 0.4 & 1.8 & 11.0 & 0.2\\
GGG & 32.9904 & 8.60325 & 9.3845 & 0.0495 & 1.43225 & 10.79525 & 0.119\\
DDD & 39.4545 & 9.8695 & 15.3365 & 0.6915 & 2.246 & 10.6705 & 0.5105\\ \bottomrule
\end{tabulary}

\begin{tablenotes}
\item [1] the first note ...
\end{tablenotes}

\end{threeparttable}
\end{table}

\lipsum[2]

\end{document}

Bearbeiten

versuchenCenterdie zweizeiligen Überschriften:

\usepackage{caption}
(...)
\begin{table}
  \captionsetup{singlelinecheck=false, justification=centering}
\begin{threeparttable}
\caption{this is my first\newline table's very captive caption}

... das Ergebnis dieses Versuchs sieht nicht ganz richtig aus ... wie macht man es richtig?


Bearbeiten 2

  • Wie kann ich den Zeilenumbruch zwischen zwei bestimmten Wörtern (oder sogar Zeichen) bewirken?aber nur wenndie Überschrift würde in jedem Fall umgebrochen werden?

Das heißt, der Zeilenumbruch wäre "inaktiv", solange die Überschrift kurz genug ist, um vollständig in eine Zeile zu passen; sobald ermüssenZeilenumbruch, der Umbruch erfolgt an der vorgegebenen Stelle.

Antwort1

LaTeX verwendet für die Überschrift zwei Durchläufe. Im ersten Durchlauf wird die Überschrift gesetzt. \hboxWenn das Ergebnis in eine Zeile passt, wird die Überschrift einzeilig gesetzt, andernfalls mehrzeilig. In deinem Fall ist die Überschrift zu kurz und passt in eine Zeile.

Ein Trick: Es wird ein Zeilenumbruch gesetzt und der Überschrift viel horizontalen Abstand hinzugefügt. Im ersten Durchgang wird der Zeilenumbruch ignoriert, aber der horizontale Abstand sorgt dafür, dass die Überschrift nicht in eine Zeile passt. Anschließend wird die Überschrift mehrzeilig gesetzt und der Zeilenumbruch ausgeführt, aber der horizontale Abstand am Anfang der nächsten Zeile wird verworfen (\hspace ohneStern):

\documentclass{article}
\begin{document}
\begin{table}
  \caption{this is my first\newline
    \hspace{\linewidth}table's captive caption}
\end{table}
\end{document}

Ergebnis

Als Alternative captionbietet das Paket eine Option singlelinecheck, mit der der erste Durchgang zur Überprüfung der Untertitellänge deaktiviert werden kann:

\documentclass{article}
\usepackage{caption}
\begin{document}
\begin{table}
  \captionsetup{singlelinecheck=false}
  \caption{this is my first\newline
    table's captive caption}
\end{table}
\end{document}

(Die Option kann auch global in der Präambel gesetzt werden.)

Zentrierung

Im Folgenden wird ein innerer tabular(und der Standard singlelinecheck=true) verwendet. Die Breite der Tabellenbeschriftung Table 1:wird berechnet ( \settowidth) und berücksichtigt.

Wenn das optionale Argument von \captionnicht verwendet wird, wird im folgenden Beispiel auch lokal neu definiert, \centeredmultilineincaptionum tabularund den Zeilenumbruch für das Abbildungsverzeichnis zu entfernen.

\documentclass{article}

\makeatletter
\newlength{\@captionlabelwidth}
\DeclareRobustCommand*{\centeredmultilineincaption}[1]{%
  \settowidth{\@captionlabelwidth}{%
    \@nameuse{fnum@\@captype}: %
  }%
  \begin{tabular}[t]{@{\hspace{-\@captionlabelwidth}}c@{}}%
    \hspace{\@captionlabelwidth}\ignorespaces
    #1%
  \end{tabular}%
}

\begin{document}
\begingroup
  \renewcommand*{\centeredmultilineincaption}[1]{%
    \begingroup
      \let\tabularnewline\space
      #1%
    \endgroup
  }%
  \listoftables
\endgroup

\begin{table}
  \caption{%
    \centeredmultilineincaption{%
       this is my first\tabularnewline
       table's captive caption
    }%
  }
\end{table}
\end{document}

Ergebnis mit Zentrierung

Aktualisieren:Diese Methode funktioniert nur, wenn die erste Zeile länger ist.

"Bedingter" Zeilenumbruch

  • Es können sowohl \\als auch \linebreakverwendet werden. Im einzeiligen Modus verschwinden sie, daher sollte vor ein Leerzeichen gesetzt werden: first line \linebreak second line, nicht first line\linebreak second line. Letzteres würde first linesecond lineim einzeiligen Modus erscheinen.
  • Beide Makros sind fragil. Soll der gleiche Zeilenumbruch auch in der Tabellenliste vorkommen, dann \protectist folgendes notwendig:

    \caption{First line \protect\\second line}
    
  • \captionFür die Liste der Tabellen kann das optionale Argument verwendet werden:

    \caption[Short version]{First line \\second line}
    

    oder ein anderer Zeilenumbruch in der Tabellenliste:

    \caption[Short\protect\\version]{First line \\second line}
    

Das folgende Beispiel definiert, \captionlinebreakdass

  • kümmert sich um den Raum davor,
  • ist robust und
  • kann für die Tabellenliste neu definiert werden.

Wenn die mehrzeilige Überschrift auch zentriert sein soll, wird es noch hässlicher, weil sie \@makecaptionneu definiert werden muss und ihre Definition von Klasse und Paketen abhängt. Das Beispiel definiert sie für die Klasse articleohne Paket neu caption:

\documentclass[a5paper]{article}
\usepackage{varwidth}

\DeclareRobustCommand*{\captionlinebreak}{%
  \leavevmode\unskip\space % one space before
  \\%
}

\makeatletter
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    \centerline{%
      \begin{varwidth}{\hsize}%
        #1: #2%
      \end{varwidth}%
    }%
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip
}
\makeatother

\begin{document}
\begingroup
  \let\captionlinebreak\relax
  \listoftables
\endgroup
\begin{table}
\centering
\caption{Lorem ipsum\protect\captionlinebreak
  dolor sit amet, consetetur sadipscing elitr, \dots}
\end{table}
\begin{table}
\centering
\caption{Lorem ipsum\captionlinebreak
  dolor sit amet, \dots}
\end{table}
\end{document}

Ergebnis

Antwort2

\centeringdefiniert neu \\, damit es richtig funktioniert, definiert aber leider nicht neu \newline. Daher führt die Kombination \centeringvon \newlinezu merkwürdigen Ergebnissen:

\documentclass{article}
\begin{document}
\parbox{\linewidth}{\centering
This is some text\newline And this is some text, too.}
\par\bigskip
\parbox{\linewidth}{\centering
This is some text\\And this is some text, too.}
\end{document}

Bildbeschreibung hier eingeben

(Warum? Fehler in LaTeX? Vielleicht könnte David Carlisle hier das Licht anmachen?)

Verwenden Sie es also besser \\in Überschriften oder anderen Dingen, die zentriert gesetzt werden sollen. Übrigens: Wenn Sie das captionPaket verwenden, wird ein mit gesetzter Zeilenumbruch \\in Listeneinträgen automatisch durch ein Leerzeichen ersetzt, sodass es normalerweise nicht nötig ist, einen alternativen Listeneintragstext zu verwenden:

\documentclass{article}
\usepackage[justification=centering]{caption}
\begin{document}
\listoftables
\begin{table}
  \caption{This is my first\\table's captive caption}
\end{table}
\end{document}

Bildbeschreibung hier eingeben

Nachtrag „Bedingter Zeilenumbruch“

Mit \DeclareCaptionStylekönnen Sie unterschiedliche Optionen für "einzeilige" und "lange" Untertitel festlegen. Mit \DeclareCaptionOptionkönnen Sie eigene Optionen für die Verwendung mit dem captionPaket definieren.

Als Beispiel definiere ich eine neue Bedingung namens \ifcaptionlinebreakund eine entsprechende Option zur Verwendung mit dem Paket, die mit und captionumgeschaltet werden kann :linebreak=falselinebreak=true

\documentclass{article}

\usepackage{caption}

% New conditional \ifcaptionlinebreak
\newif\ifcaptionlinebreak

% New caption package option "linebreak" for toggeling \ifcaptionlinebreak
\DeclareCaptionOption{linebreak}{\csname captionlinebreak#1\endcsname}

% New command \captionlinebreak which either typesets a line break or a space,
% depending on \ifcaptionlinebreak
\newcommand\captionlinebreak{\ifcaptionlinebreak\\\else\space\fi}

% Own caption style which turns the linebreak into a space for short captions
% and into a line break for long captions
\DeclareCaptionStyle{mystyle}[linebreak=false]{linebreak=true}
\captionsetup{style=mystyle,justification=centering}

\begin{document}
\listoftables

\begin{table}[!hb]
  \caption{This is my first\\table's captive caption}
\end{table}

\begin{table}[!hb]
  \caption{This is my first\captionlinebreak table's captive caption}
\end{table}

\begin{table}[!hb]
  \caption{This is my first\captionlinebreak table's captive caption.
                 This is my first table's captive caption}
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Nachtrag zum Nachtrag „Bedingter Zeilenumbruch“

Ich habe \ifsinglelinecaptiondas captionPaket gerade erst vorgestellt. Ab der nächsten auf CTAN veröffentlichten Version könnte das obige Beispieldokument also wie folgt reduziert werden:

\documentclass{article}

\usepackage[justification=centering]{caption}
\newcommand\captionlinebreak{\ifsinglelinecaption\space\else\\\fi}

\begin{document}
\listoftables

\begin{table}[!hb]
  \caption{This is my first\\table's captive caption}
\end{table}

\begin{table}[!hb]
  \caption{This is my first\captionlinebreak table's captive caption}
\end{table}

\begin{table}[!hb]
  \caption{This is my first\captionlinebreak table's captive caption.
                 This is my first table's captive caption}
\end{table}

\end{document}

(Die aktuelle Version erhalten Sie beihttp://sourceforge.net/p/latex-caption/code/HEAD/tree/trunk/tex/)

verwandte Informationen