Я использую следующее предложение Дэвида
Добавление подписи к графике внутри длинной таблицы
Я просто хочу узнать, как сделать подпись слева, так как я заметил, что иногда она как бы меняет левую строку.
Это от Дэвида. Мне нужно переместить подпись влево.
\makeatletter
\def\figcaption{%
\refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
Я использую «figcaption» в своей длинной таблице, как указано в предоставленной ссылке.
\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}
решение1
Так?
\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}
Редактировать: Для подписей определены две настройки, одна для всех подписей, одна для добавления ширины для подписей таблиц. Результат MWE тот же, что и раньше.
решение2
Этот ответ использует некоторые возможности пакетов caption
и subcaption
. Он может предоставить универсальное решение, поскольку становится возможным ряд настроек. Я также пытался использовать некоторые возможности пакета ltcaption
, но в итоге ни одна из них здесь не реализована.
Для простоты я удалил код, не относящийся к форматированию подписей и подзаголовков. Пакеты caption
, ltcaption
и subcaption
предоставляют соответствующие им макросы \captionsetup
, \captionsetup[longtable]
и \captionsetup[sub]
, но, как уже упоминалось, в итоге я не использовал \captionsetup[longtable]
.
Рисунки размещены в subfigure
окружениях, которые на самом деле являются minipages
. Использование subfigure
окружения является требованием для использования \subcaption
. Затем субтитры используют форматирование, предоставляемое \captionsetup[sub]
. Поскольку это указывает, justification=raggedright
что подписи для субтитров устанавливаются на левом поле. Подпись длинной таблицы также устанавливается на левом поле с использованием подхода captionsetup
, но в этом случае более вероятно, что требование заключается в том, чтобы подпись была выровнена по левому краю таблицы, поэтому я добавил , margin=1.75
чтобы добиться этого. Конечный результат заключается в том, что это, по-видимому, близко к требованию.
Также можно настроить форматирование подписей, чтобы двоеточие было разделителем между подписью и типом подписи (в данном случае Таблица и Подрисунок). Эти имена также можно настроить с помощью макроса \DeclareCaptionLabelFormat
. Я добавил настройки форматирования меток для подписи таблицы, написанной на португальском языке как Tabela, а для форматирования подрисунков я просто использовал Subfigure. В опубликованном примере указано, что подрисунки имеют арабскую нумерацию, но моя попытка сбросить нумерацию с арабской на буквенную не сработала. В примере также показан заголовок длинной таблицы с буквенной меткой, что достигается с помощью \renewcommand{\thetable}{\Alph{table}}
.
Результат таков:
MWE выглядит следующим образом:
\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}