Existe uma maneira de corrigir a limitação do pacote intelligentef em relação à citação de subfloats?

Existe uma maneira de corrigir a limitação do pacote intelligentef em relação à citação de subfloats?

Ao fazer referência a carros alegóricos usando \crefcomandos, eles às vezes podem gerar uma composição tipográfica incorreta. Isso é especialmente verdadeiro quando subflutuantes são incluídos.

Um exemplo é quando temos o float 1 com dois subfloats; o intervalo 1a and 2 to 5será confundido como se fosse de 1a to 5. Além disso, se ambos 1ae 1bestiverem incluídos na referência do código-fonte, é suposto mencionar todos os subfloats incluídos no código-fonte, não apenas um deles (ver ponto 2). A saída da composição é mostrada abaixo:

insira a descrição da imagem aqui

Esta saída é gerada usando o seguinte código-fonte:

\documentclass[twocolumn]{report}

\usepackage{float}
\usepackage{subfloat}
\usepackage{caption}
\usepackage{cleveref}
\usepackage{paralist}



\begin{document}


    \begin{subfigures}

        % Subfigure 1
        \begin{figure}[H]

            \centering
            \fbox{\Huge Figure 1a}


            \caption{Caption 1}
            \label{fig1a}

        \end{figure}


        % Subfigure 2
        \begin{figure}[H]

            \centering
            \fbox{\Huge Figure 1b}


            \caption{Caption 1b}
            \label{fig1b}

        \end{figure}


    \end{subfigures}


    % Figure 2
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 2}


        \caption{Caption 2}
        \label{fig2}

    \end{figure}


    % Figure 3
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 3}


        \caption{Caption 3}
        \label{fig3}

    \end{figure}


    % Figure 4
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 4}


        \caption{Caption 4}
        \label{fig4}

    \end{figure}


    % Figure 5
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 5}


        \caption{Caption 5}
        \label{fig5}

    \end{figure}


    % Figure 6
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 6}


        \caption{Caption 6}
        \label{fig6}

    \end{figure}



    \newpage
    Figures are correctly cited for different citation formats such as:

    \begin{enumerate}

        \item Multiple: \textbf{\cref{fig5,,fig3,,fig4,,fig2}}
        \item Range: \textbf{\cref{fig5,fig3,fig4}}
        \item Multiple and range: \textbf{\cref{fig2,fig4,fig3,fig6}}

    \end{enumerate}


    \vspace{5mm}
    But once subfigures are included, some citations formats do not work:

    \begin{enumerate}

    \item Multiple (works): \textbf{\cref{fig3,,fig4,,fig2,,fig1a}}
    \item Range: \textbf{\cref{fig1a,fig1b,fig5,fig3,fig4}} (the output should be \textbf{figs. 1a to 1b and 3 to 5})
    \item Multiple and range: \textbf{\cref{fig1a,fig2,fig4,fig3,fig6}} (the output should be \textbf{figs. 1a, 2 to 4 and 6})

    \end{enumerate}


\end{document}

Já tenho uma solução que atenua o problema, mas não com o mesmo resultado esperado acima.

Responder1

insira a descrição da imagem aqui Podemos definir um novo tipo float ( subfig) paracleveref

\crefformat{subfig}{fig. #1}
\crefrangeformat{subfig}{figs. #1 to #2}
\crefmultiformat{subfig}{figs. #1}{ and #1}{, #1}{ and #1}
\crefrangemultiformat{subfig}{figs. #1 to #2}{}{}{}

Então, no preâmbulo, definimos um novo comando:

\newcommand{\labelsf}[1]{ \label[subfig]{#1} } % a new command for labeling subfigures

labelsfagora pode ser usado para rotular subfiguras.

Um código-fonte completo é mostrado abaixo:

\documentclass[twocolumn]{report}

\usepackage{float}
\usepackage{subfloat}
\usepackage{caption}
\usepackage{paralist}

\usepackage{cleveref}
\crefformat{subfig}{fig. #1}
\crefrangeformat{subfig}{figs. #1 to #2}
\crefmultiformat{subfig}{figs. #1}{ and #1}{, #1}{ and #1}
\crefrangemultiformat{subfig}{figs. #1 to #2}{}{}{}
\newcommand{\labelsf}[1]{ \label[subfig]{#1} } % a new command for labeling subfigures

\begin{document}


    \begin{subfigures}

        % Subfigure 1
        \begin{figure}[H]

            \centering
            \fbox{\Huge Figure 1a}


            \caption{Caption 1}
            \labelsf{fig1a}

        \end{figure}


        % Subfigure 2
        \begin{figure}[H]

            \centering
            \fbox{\Huge Figure 1b}


            \caption{Caption 1b}
            \labelsf{fig1b}

        \end{figure}


    \end{subfigures}


    % Figure 2
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 2}


        \caption{Caption 2}
        \label{fig2}

    \end{figure}


    % Figure 3
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 3}


        \caption{Caption 3}
        \label{fig3}

    \end{figure}


    % Figure 4
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 4}


        \caption{Caption 4}
        \label{fig4}

    \end{figure}


    % Figure 5
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 5}


        \caption{Caption 5}
        \label{fig5}

    \end{figure}


    % Figure 6
    \begin{figure}[H]

        \centering
        \fbox{\Huge Figure 6}


        \caption{Caption 6}
        \label{fig6}

    \end{figure}



    \newpage
    Figures are correctly cited for different citation formats such as:

    \begin{enumerate}

        \item Multiple: \textbf{\cref{fig5,,fig3,,fig4,,fig2}}
        \item Range: \textbf{\cref{fig5,fig3,fig4}}
        \item Multiple and range: \textbf{\cref{fig2,fig4,fig3,fig6}}

    \end{enumerate}


    \vspace{5mm}
    But once subfigures are included, some citations formats do not work:

    \begin{enumerate}

    \item Multiple (works): \textbf{\cref{fig3,,fig4,,fig2,,fig1a}}
    \item Range: \textbf{\cref{fig1a,fig1b,fig5,fig3,fig4}} (the output should be \textbf{figs. 1a to 1b and 3 to 5})
    \item Multiple and range: \textbf{\cref{fig1a,fig2,fig4,fig3,fig6}} (the output should be \textbf{figs. 1a, 2 to 4 and 6})

    \end{enumerate}


\end{document}

crefagora fará referência às subfiguras corretamente, mas as desvantagens desta solução são:

  • não podemos encontrar os usos dos floats clicando duas vezes em seus rótulos e também não podemos encontrar o código-fonte do float clicando em seu rótulo
  • o nome do float às vezes pode ser repetido duas vezes, o que é redundante

informação relacionada