긴 테이블에서 캡션을 왼쪽으로 강제 이동하려면 어떻게 해야 합니까?

긴 테이블에서 캡션을 왼쪽으로 강제 이동하려면 어떻게 해야 합니까?

David의 다음 제안을 사용하고 있습니다.

Longtable 내부 그래픽에 캡션 추가

캡션을 왼쪽에 어떻게 만들 수 있는지 알고 싶습니다. 캡션이 때때로 왼쪽 줄을 바꾸는 것을 알았기 때문입니다.

이것은 David가 보낸 것입니다. 캡션을 왼쪽으로 강제로 이동해야 합니다.

\makeatletter
\def\figcaption{%
    \refstepcounter{figure}%
    \@dblarg{\@caption{figure}}}
\makeatother

제공된 링크에 명시된 대로 Longtable에서 "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}

관련 정보