Subfig + float e stile ruled per ambienti figure

  • Creatore
    Topic
  • #41812
    Venator85
    Partecipante
      Up
      0
      Down
      ::


      Salve a tutti, ho un problema dovuto all’uso in contemporanea dei pacchetti subfig e float, quando quest’ultimo viene utilizzato per applicare lo stile ruled agli ambienti figure.
      Un documento minimo è questo:
      `\documentclass[a4paper,oneside]{book}
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage{csquotes}
      \usepackage[italian]{babel}
      \usepackage{graphicx}
      \usepackage{float}
      \usepackage{subfig}
      \usepackage{hyperref}

      \floatstyle{ruled}
      \restylefloat{figure}

      \graphicspath{{images/}}

      \begin{document}

      \begin{figure}
      \centering
      \subfloat[CreatePassword.]{ \includegraphics[width=0.45\columnwidth]{createpassword} \label{fig:createpassword} }\quad
      \subfloat[NotInstalled.]{ \includegraphics[width=0.45\columnwidth]{notinstalled} \label{fig:notinstalled} } \\
      \subfloat[Login.]{ \includegraphics[width=0.45\columnwidth]{login} \label{fig:login} } \quad
      \subfloat[HiddenContent.]{ \includegraphics[width=0.45\columnwidth]{hiddencontent} \label{fig:hiddencontent} }
      \caption{Le activity dell'applicazione (parte 1).}
      \label{fig:activities1}
      \end{figure}

      \ref{fig:createpassword}, \ref{fig:notinstalled}, \ref{fig:login}, \ref{fig:hiddencontent}

      \ref{fig:activities1}

      \end{document}`
      Il documento viene compilato senza errori, ma le 4 subfigure vengono numerate come 0a, 0b, 0c e 0d invece che 1a, 1b, 1c, 1d. Se si commenta la riga “\restylefloat{figure}” allora la numerazione è corretta. La cosa curiosa è che in entrambi i casi il link generato da hyperref funziona correttamente.
      Sapete come posso risolvere?
      Grazie mille
      Ciao
      Alessio

    Visualizzazione 2 filoni di risposte
    • Autore
      Risposte
      • #41813
        Up
        0
        Down
        ::

        Salve a tutti, ho un problema dovuto all’uso in contemporanea dei pacchetti subfig e float, quando quest’ultimo viene utilizzato per applicare lo stile ruled agli ambienti figure.
        Un documento minimo è questo:
        `\documentclass[a4paper,oneside]{book}
        \usepackage[utf8]{inputenc}
        \usepackage[T1]{fontenc}
        \usepackage{csquotes}
        \usepackage[italian]{babel}
        \usepackage{graphicx}
        \usepackage{float}
        \usepackage{subfig}
        \usepackage{hyperref}

        \floatstyle{ruled}
        \restylefloat{figure}

        \graphicspath{{images/}}

        \begin{document}

        \begin{figure}
        \centering
        \subfloat[CreatePassword.]{ \includegraphics[width=0.45\columnwidth]{createpassword} \label{fig:createpassword} }\quad
        \subfloat[NotInstalled.]{ \includegraphics[width=0.45\columnwidth]{notinstalled} \label{fig:notinstalled} } \\
        \subfloat[Login.]{ \includegraphics[width=0.45\columnwidth]{login} \label{fig:login} } \quad
        \subfloat[HiddenContent.]{ \includegraphics[width=0.45\columnwidth]{hiddencontent} \label{fig:hiddencontent} }
        \caption{Le activity dell'applicazione (parte 1).}
        \label{fig:activities1}
        \end{figure}

        \ref{fig:createpassword}, \ref{fig:notinstalled}, \ref{fig:login}, \ref{fig:hiddencontent}

        \ref{fig:activities1}

        \end{document}`
        Il documento viene compilato senza errori, ma le 4 subfigure vengono numerate come 0a, 0b, 0c e 0d invece che 1a, 1b, 1c, 1d. Se si commenta la riga “\restylefloat{figure}” allora la numerazione è corretta. La cosa curiosa è che in entrambi i casi il link generato da hyperref funziona correttamente.
        Sapete come posso risolvere?

        `\floatstyle{ruled}
        \restylefloat{figure}
        \captionsetup[figure]{position=bottom}
        \makeatletter
        \renewcommand{\p@subfigure}{\arabic{figure}}
        \makeatletter`
        Il comando \captionsetup è necessario perché così subfig sa quando assegnare il valore al numero della figura. Evidentemente con il \restylefloat{figure} la corrispondenza predefinita viene persa. La seconda ridefinizione serve perché usi la classe book che ridefinisce \thefigure; non sono riuscito a trovare di meglio. 🙁

        Ciao
        Enrico

      • #41814
        Venator85
        Partecipante
          Up
          0
          Down
          ::


          Grazie Enrico, ha funzionato!
          Mi dispiace abusare di nuovo della tua pazienza, ma purtroppo corretta una cosa se ne rompe un’altra 😆
          Tempo fa mi fornisti uno ‘snippet’ per rendere anche l’ambiente listing con lo stile ruled, ma che ora non funziona più 😕
          Riposto una seconda versione del documento:
          `\documentclass[a4paper,oneside]{book}
          \usepackage[utf8]{inputenc}
          \usepackage[T1]{fontenc}
          \usepackage{csquotes}
          \usepackage[italian]{babel}
          \usepackage{graphicx}
          \usepackage{float}
          \usepackage{subfig}
          \usepackage{hyperref}
          \usepackage{listings}

          \floatstyle{ruled}
          \restylefloat{figure}
          \captionsetup[figure]{position=bottom}
          \makeatletter
          \renewcommand{\p@subfigure}{\arabic{figure}}
          \makeatletter

          \restylefloat{table}

          %%%%% stile ruled per ambienti listings %%%%%
          \lstset{frame=tb}
          \makeatletter
          \def\lst@makecaption#1#2{%
          \def\@fs@cfont{\bfseries}%
          \hrule\@height .8\p@\kern2\p@
          \floatc@ruled{#1}{#2}\par\kern\dp\strutbox\kern-1\p@}
          \makeatother
          %%%%%%%%%%%%%%%%%%%%%

          \graphicspath{{images/}}

          \begin{document}

          \begin{figure}
          \centering
          \subfloat[CreatePassword.]{ \includegraphics[width=0.45\columnwidth]{createpassword} \label{fig:createpassword} }\quad
          \subfloat[NotInstalled.]{ \includegraphics[width=0.45\columnwidth]{notinstalled} \label{fig:notinstalled} } \\
          \subfloat[Login.]{ \includegraphics[width=0.45\columnwidth]{login} \label{fig:login} } \quad
          \subfloat[HiddenContent.]{ \includegraphics[width=0.45\columnwidth]{hiddencontent} \label{fig:hiddencontent} }
          \caption{Le activity dell'applicazione (parte 1).}
          \label{fig:activities1}
          \end{figure}

          \ref{fig:createpassword}, \ref{fig:notinstalled}, \ref{fig:login}, \ref{fig:hiddencontent}

          \ref{fig:activities1}

          \begin{lstlisting}[float=tbp, label={code:readelf-header}, caption={Struttura e contenuto della testata di un file ELF su architettura x86\_64.}]
          blablabla
          \end{lstlisting}

          \begin{table}
          \centering
          \begin{tabular}{cc}
          a & a\\
          a & a\\
          \end{tabular}
          \caption{didascalia}
          \end{table}

          \end{document}
          `
          Grazie mille
          Alessio

        • #41815
          Up
          0
          Down
          ::

          Grazie Enrico, ha funzionato!
          Mi dispiace abusare di nuovo della tua pazienza, ma purtroppo corretta una cosa se ne rompe un’altra 😆
          Tempo fa mi fornisti uno ‘snippet’ per rendere anche l’ambiente listing con lo stile ruled, ma che ora non funziona più 😕
          Riposto una seconda versione del documento:
          `\documentclass[a4paper,oneside]{book}
          \usepackage[utf8]{inputenc}
          \usepackage[T1]{fontenc}
          \usepackage{csquotes}
          \usepackage[italian]{babel}
          \usepackage{graphicx}
          \usepackage{float}
          \usepackage{subfig}
          \usepackage{hyperref}
          \usepackage{listings}

          \floatstyle{ruled}
          \restylefloat{figure}
          \captionsetup[figure]{position=bottom}
          \makeatletter
          \renewcommand{\p@subfigure}{\arabic{figure}}
          \makeatletter

          \restylefloat{table}

          %%%%% stile ruled per ambienti listings %%%%%
          \lstset{frame=tb}
          \makeatletter
          \def\lst@makecaption#1#2{%
          \def\@fs@cfont{\bfseries}%
          \hrule\@height .8\p@\kern2\p@
          \floatc@ruled{#1}{#2}\par\kern\dp\strutbox\kern-1\p@}
          \makeatother
          %%%%%%%%%%%%%%%%%%%%%

          \graphicspath{{images/}}

          \begin{document}

          \begin{figure}
          \centering
          \subfloat[CreatePassword.]{ \includegraphics[width=0.45\columnwidth]{createpassword} \label{fig:createpassword} }\quad
          \subfloat[NotInstalled.]{ \includegraphics[width=0.45\columnwidth]{notinstalled} \label{fig:notinstalled} } \\
          \subfloat[Login.]{ \includegraphics[width=0.45\columnwidth]{login} \label{fig:login} } \quad
          \subfloat[HiddenContent.]{ \includegraphics[width=0.45\columnwidth]{hiddencontent} \label{fig:hiddencontent} }
          \caption{Le activity dell'applicazione (parte 1).}
          \label{fig:activities1}
          \end{figure}

          \ref{fig:createpassword}, \ref{fig:notinstalled}, \ref{fig:login}, \ref{fig:hiddencontent}

          \ref{fig:activities1}

          \begin{lstlisting}[float=tbp, label={code:readelf-header}, caption={Struttura e contenuto della testata di un file ELF su architettura x86\_64.}]
          blablabla
          \end{lstlisting}

          \begin{table}
          \centering
          \begin{tabular}{cc}
          a & a\\
          a & a\\
          \end{tabular}
          \caption{didascalia}
          \end{table}

          \end{document}
          `
          Grazie mille
          Alessio

          Magari, se fai come nell’esempio che ti avevo dato è meglio: listings va caricato prima di float e occorre dare \restylefloat{listings}.

          Ciao
          Enrico

      Visualizzazione 2 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top