Estoy usando la siguiente sugerencia de David.
Agregar un título a un gráfico dentro de una tabla larga
Solo quiero saber cómo puedo hacer el título a la izquierda, ya que noté que a veces cambia la línea izquierda.
Esto es de David. Necesito forzar el título hacia la izquierda.
\makeatletter
\def\figcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
Estoy usando el "figcaption" en mi tabla larga, como se indica en el enlace proporcionado.
\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}
Respuesta1
¿Como esto?
\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 los subtítulos se definen dos configuraciones, una para todos los subtítulos y otra para agregar ancho a los subtítulos de las tablas. El resultado de MWE es el mismo que antes.
Respuesta2
Esta respuesta utiliza algunas de las capacidades de los paquetes caption
and subcaption
. Puede proporcionar una solución versátil ya que es posible una variedad de personalizaciones. También intenté utilizar algunas de las capacidades del ltcaption
paquete, pero al final, ninguna se implementa aquí.
Para simplificar, eliminé el código que no era relevante para formatear los títulos y subtítulos. Los paquetes caption
, ltcaption
y subcaption
ponen a disposición sus respectivas \captionsetup
macros \captionsetup[longtable]
, \captionsetup[sub]
pero como ya mencioné, al final no las usé \captionsetup[longtable]
.
Las figuras están colocadas en subfigure
entornos que en realidad son minipages
. El uso del subfigure
medio ambiente es un requisito para el uso \subcaption
. Luego, los subtítulos utilizan el formato proporcionado por \captionsetup[sub]
. Dado que esto especifica, justification=raggedright
los títulos de las subfiguras se establecen en el margen izquierdo. El título de la tabla larga también se establece en el margen izquierdo usando este captionsetup
enfoque, pero en este caso es más probable que el requisito sea que el título quede alineado con el borde de la tabla, así que lo agregué margin=1.75
para lograrlo. El resultado final es que parece acercarse al requisito.
También es posible personalizar el formato de los títulos para proporcionar dos puntos como separador entre el título y el tipo de título (en este caso, Tabla y Subfigura). Esos nombres también se pueden personalizar usando la \DeclareCaptionLabelFormat
macro. Agregué configuraciones de formato de etiquetas para el título de la tabla, escritas en portugués como Tabela y para el formato de subfiguras, solo usé Subfigure. El ejemplo publicado indica que las subfiguras tienen numeración arábiga, pero mi intento de restablecer la numeración desde alfa desde árabe no funcionó. El ejemplo también muestra el título de la tabla larga con una etiqueta alfa, que se logra con \renewcommand{\thetable}{\Alph{table}}
.
El resultado es este:
El MWE es el siguiente:
\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}