Estou usando a seguinte sugestão de David
Adicionando uma legenda a um gráfico dentro de uma tabela longa
Só quero saber como posso fazer a legenda para a esquerda, pois percebi que às vezes meio que muda a linha da esquerda.
Isto é de Davi. Preciso forçar a legenda para a esquerda.
\makeatletter
\def\figcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
Estou usando o "figcaption" na minha tabela longa, conforme indicado no link fornecido.
\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}
Responder1
Assim?
\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}
Editar: Para as legendas são definidas duas configurações, uma para todas as legendas, uma adição de largura para as legendas das tabelas. O resultado do MWE é o mesmo de antes.
Responder2
Esta resposta usa alguns dos recursos dos pacotes caption
e subcaption
. Pode fornecer uma solução versátil, uma vez que uma variedade de personalizações se torna possível. Também tentei usar alguns dos recursos do ltcaption
pacote, mas no final, nenhum deles foi realmente implementado aqui.
Para simplificar, removi o código não relevante para a formatação das legendas e sublegendas. Os pacotes caption
, ltcaption
e subcaption
disponibilizam suas respectivas macros \captionsetup
, \captionsetup[longtable]
e \captionsetup[sub]
, mas como já mencionado, no final não utilizei o \captionsetup[longtable]
.
As figuras são colocadas em subfigure
ambientes que na verdade são minipages
. O uso do subfigure
ambiente é um requisito para usar o \subcaption
. As sublegendas utilizam a formatação fornecida por \captionsetup[sub]
. Como isso especifica, justification=raggedright
as legendas das subfiguras são definidas na margem esquerda. A legenda da tabela longa também é definida na margem esquerda usando a captionsetup
abordagem, mas neste caso é mais provável que o requisito seja que a legenda fique alinhada à esquerda com a borda da tabela, então adicionei margin=1.75
para conseguir isso. O resultado final é que parece estar próximo do requisito.
Também é possível personalizar a formatação das legendas para fornecer os dois pontos como separador entre a legenda e o tipo de legenda (neste caso Tabela e Subfigura). Esses nomes também podem ser personalizados usando a \DeclareCaptionLabelFormat
macro. Adicionei configurações de formatação de rótulos para a legenda da tabela, escrita em português como Tabela e para formatação de subfiguras, usei apenas Subfigura. O exemplo postado indica que as subfiguras possuem numeração arábica, mas minha tentativa de redefinir a numeração de alfa para árabe não funcionou. O exemplo também mostra a legenda da tabela longa com um rótulo alfa, que é obtido com \renewcommand{\thetable}{\Alph{table}}
.
O resultado é este:
O MWE é o seguinte:
\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}