Ich verwende den folgenden Vorschlag von David
Hinzufügen einer Beschriftung zu einer Grafik in einer langen Tabelle
Ich möchte nur wissen, wie ich die Überschrift nach links einfügen kann, da mir aufgefallen ist, dass sie manchmal die linke Zeile irgendwie verändert.
Das ist von David. Ich muss die Überschrift nach links verschieben.
\makeatletter
\def\figcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
Ich verwende auf meinem Longtable die „Figcaption“, wie im bereitgestellten Link angegeben.
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage{makecell,multirow,tabularx,booktabs}
\usepackage{longtable}
\usepackage{graphicx}
\usepackage{caption}
\usepackage[showframe=false,,left=2cm,right=2cm,top=2cm,bottom=4.5cm]{geometry}
%this is for figure captions inside a multicolumn/longtable
\makeatletter
\def\figcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
%this is for figure captions inside a multicolumn/longtable
\begin{document}
%%%%%%%%%%%%%%%%%%START TABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{longtable}{|p{2.5cm}p{2.5cm}p{2.5cm}p{2.5cm}p{2.5cm}p{2.5cm}|}
\captionsetup{singlelinecheck=false}%ADDED HERE
\endfirsthead
\multicolumn{6}{r}{\makebox[17cm][r]{\textit{Continuação da página anterior}}}\\ \hline
\endhead
\hline
\multicolumn{6}{r}{\makebox[17cm][r]{\textit{Continua na próxima página}}}\\
\endfoot
\endlastfoot
\hline
\multicolumn{6}{|l|}{\textbf{Resultado:}} \\
%inicio da figura
\multicolumn{6}{|l|}{\parbox{15cm}{
\includegraphics[scale=0.4]{example-image-a}
\figcaption{This caption should be on the flushleft and it is not}}}
\\ %fim da figura
\multicolumn{6}{|l|}{} \\
\hline
\caption{Table A - test caption forced to the left}
\end{longtable}
\end{document}
Antwort1
So was?
\documentclass[12pt,a4paper]{article}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=4.5cm]{geometry}% simplified
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage{makecell,multirow,tabularx,booktabs}
\usepackage{longtable}
\usepackage{graphicx}
\usepackage{caption}
\captionsetup{labelfont=bf, singlelinecheck=false}% added, had to be here
\captionsetup[table]{singlelinecheck}% added for changing table caption
%this is for figure captions inside a multicolumn/longtable
\makeatletter
\def\figcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}
}
\makeatother
\begin{document}
%%%%%%%%%%%%%%%%%%START TABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{longtable}{|p{2.5cm}p{2.5cm}p{2.5cm}p{2.5cm}p{2.5cm}p{2.5cm}|}
\endfirsthead
\multicolumn{6}{r}{\textit{Continuação da página anterior}}\\ \hline
\endhead
\hline
\multicolumn{6}{r}{\textit{Continua na próxima página}}\\
\endfoot
\endlastfoot
\hline
\multicolumn{6}{|l|}{\textbf{Resultado:}} \\
%inicio da figura
\multicolumn{6}{|l|}{
\includegraphics[scale=0.4]{example-image-a}
\figcaption{This caption should be on the flushleft and it is not}}
\\ %fim da figura
\multicolumn{6}{|l|}{} \\
\hline
\caption{Table A - test caption forced to the left}
\end{longtable}
\end{document}
Bearbeiten: Für Überschriften werden zwei Einstellungen definiert, eine für alle Überschriften, eine Breitenzugabe für die Überschriften der Tabellen. Das Ergebnis von MWE ist das gleiche wie zuvor.
Antwort2
Diese Antwort verwendet einige der Funktionen der Pakete caption
und subcaption
. Sie bietet möglicherweise eine vielseitige Lösung, da eine Reihe von Anpassungen möglich werden. Ich habe auch versucht, einige der Funktionen des ltcaption
Pakets zu verwenden, aber letztendlich ist hier keine davon implementiert.
Der Einfachheit halber habe ich Code entfernt, der für die Formatierung der Überschriften und Unterüberschriften nicht relevant ist. Die Pakete caption
, ltcaption
und subcaption
stellen ihre jeweiligen Makros \captionsetup
, \captionsetup[longtable]
und zur Verfügung \captionsetup[sub]
, aber wie bereits erwähnt habe ich letztendlich nicht verwendet \captionsetup[longtable]
.
Die Abbildungen werden in subfigure
Umgebungen platziert, die eigentlich sind minipages
. Die Verwendung der subfigure
Umgebung ist Voraussetzung für die Verwendung \subcaption
von . Die Unterbeschriftungen verwenden dann die von bereitgestellte Formatierung \captionsetup[sub]
. Da dies angibt, justification=raggedright
werden die Beschriftungen für die Unterabbildungen am linken Rand gesetzt. Die Beschriftung der langen Tabelle wird mit dem captionsetup
Ansatz ebenfalls am linken Rand gesetzt, aber in diesem Fall ist es wahrscheinlicher, dass die Anforderung darin besteht, dass die Beschriftung linksbündig am Rand der Tabelle ausgerichtet sein soll, also habe ich hinzugefügt, margin=1.75
um dies zu erreichen. Das Endergebnis scheint der Anforderung nahe zu kommen.
Es ist auch möglich, die Formatierung der Bildunterschriften anzupassen, indem der Doppelpunkt als Trennzeichen zwischen der Bildunterschrift und dem Bildunterschriftentyp (in diesem Fall Tabelle und Unterabbildung) verwendet wird. Auch diese Namen können mithilfe des \DeclareCaptionLabelFormat
Makros angepasst werden. Ich habe Formatierungseinstellungen für die Beschriftung der Tabellenüberschrift hinzugefügt, die auf Portugiesisch als Tabela geschrieben ist, und für die Formatierung der Unterabbildung habe ich einfach Unterabbildung verwendet. Das gepostete Beispiel zeigt, dass Unterabbildungen eine arabische Nummerierung haben, aber mein Versuch, die Nummerierung von alphanumerisch auf arabisch zurückzusetzen, hat nicht funktioniert. Das Beispiel zeigt auch die lange Tabellenüberschrift mit einer alphanumerischen Beschriftung, die mit erreicht wird \renewcommand{\thetable}{\Alph{table}}
.
Das Ergebnis ist folgendes:
Der MWE lautet wie folgt:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage{longtable,ltcaption,subcaption}
\usepackage{graphicx}
\usepackage[showframe=false,left=2cm,right=2cm,top=2cm,bottom=4.5cm]{geometry}
%\LTcapmarginsfalse % for testing
\setlength\LTcapleft{0pt} % Not working?
\setlength\LTcapright{0pt} % Not working?
\DeclareCaptionLabelFormat{sfcapt}{Subfigure {#2}}
\DeclareCaptionLabelFormat{ltcapt}{Tablea {#2}}
\captionsetup[sub]{labelformat=sfcapt,labelsep=colon,justification=raggedright,singlelinecheck=off}
%\captionsetup[longtable]{labelformat=ltcapt,labelsep=colon,justification=raggedright,singlelinecheck=off,width=1.0\linewidth} %justification not working?
\captionsetup{labelformat=ltcapt,margin=1.75cm,labelsep=colon,justification=raggedright,singlelinecheck=off}
\renewcommand{\thetable}{\Alph{table}}
\renewcommand{\thesubfigure}{\arabic{subfigure}} % Not working?
\setcounter{subfigure}{1} % Initialize the subfigure counter
\begin{document}
%%%%%%%%%%%%%%%%%%START TABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{table}[ht]
\begin{longtable}{|p{3cm}||p{3cm}||p{3cm}||p{3cm}|}
\hline
\begin{subfigure}[t]{1.0\linewidth}
\textbf{Resultado:} \\
\includegraphics[scale=0.25]{example-image-a} \\
\subcaption{This caption should be on the flushleft and it is not}
\end{subfigure}
&
\begin{subfigure}[t]{1.0\linewidth}
\textbf{Resultado:} \\
\includegraphics[scale=0.25]{example-image-a} \\
\subcaption{This caption should be on the flushleft and it is not}
\end{subfigure}
&
\begin{subfigure}[t]{1.0\linewidth}
\textbf{Resultado:} \\
\includegraphics[scale=0.25]{example-image-a} \\
\subcaption{This caption should be on the flushleft and it is not}
\end{subfigure}
& \\
\end{longtable}
\setcounter{table}{1} %reset the table counter
\caption{test caption forced to the left test caption forced to the left}
\end{table}
\end{document}