6

If I use the following command \usepackage[skip=20pt,hang]{caption} when a caption is very long it hangs in figures and tables, however, if the caption is of a lstlisting environment it doesn't. Besides, I haven't seen any "hang" option in the listings package. How could it be solved?

Figure hanging:

enter image description here

Lstlisting not hanging:

enter image description here

Minimun working example that looks very similar to the images:

\documentclass[12pt,a4paper,twoside]{article}
\usepackage[utf8]{inputenc}
\usepackage{times}
\renewcommand{\rmdefault}{phv} % Arial
\renewcommand{\sfdefault}{phv} % Arial
\usepackage[T1]{fontenc}

\usepackage[spanish,es-noshorthands]{babel}

\usepackage[top=2.5cm, bottom=2.5cm, inner=2.5cm, outer=3.5cm]{geometry}
\usepackage[pdftex,demo]{graphicx}
\usepackage[skip=20pt,hang]{caption}
\usepackage{subcaption}
\usepackage[usenames,dvipsnames]{xcolor} 

\definecolor{ColorPrincipal}{cmyk}{0,0.89,0.94,0.28} %este es el color BrickRed
\definecolor{ColorSecundario}{cmyk}{0,0.51,1,0} %este es el color BurntOrange
\definecolor{ColorTerciario}{cmyk}{0.40,0.80,0.20,0} %este es el color DarkOrchid
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\usepackage{listings}
\definecolor{ColorPrincipal}{RGB}{0,0,0}
\lstset{ %
    language=bash,                      % the language of the code
    %basicstyle=\footnotesize,      % the size of the fonts that are used for the code
    basicstyle=\normalsize\ttfamily,
    numbers=left,               % where to put the line-numbers
    numberstyle=\footnotesize,      % the size of the fonts that are used for the line-numbers
    stepnumber=1,               % the step between two line-numbers. If it's 1, each line will be numbered
    numbersep=1em,              % how far the line-numbers are from the code
    aboveskip=1em,              % espacio por encima del listing (1 línea)
    belowskip=0.2em,            % espacio por debajo del listing (1 línea según mis mediciones con la regla tengo que poner -1.8) ACTUALIZACIÓN con el marco del listing: sin espacio= -0.8em con una línea de espacio -0.8+1=0.2em
    %belowcaptionskip=0.5em,        % Esto hay que ponerlo individualmente a los captions que ocupen dos líneas
    backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
    showspaces=false,                   % show spaces adding particular underscores
    showstringspaces=false,         % underline spaces within strings
    showtabs=false,                     % show tabs within strings adding particular underscores
    frame=single,                       % adds a frame around the code
    frameround=fttf,            % t hace la esquina redondeada y f que sea en punta
    tabsize=2,                          % sets default tabsize to 2 spaces
    captionpos=t,                       % sets the caption-position to top
    breaklines=true,                    % sets automatic line breaking
    breakatwhitespace=true,             % sets if automatic breaks should only happen at whitespace
    title=\lstname,                   % show the filename of files included with \lstinputlisting; also try caption instead of title
    numberstyle=\scriptsize\color{gray},    % line number style
    keywordstyle=\color{blue},      % keyword style
    commentstyle=\color{dkgreen},       % comment style
    stringstyle=\color{mauve},      % string literal style
    escapeinside={\%*}{*)},         % if you want to add a comment within your code
    %morekeywords={*,...},              % if you want to add more keywords to the set
    %keywordstyle=\color{blue},
    columns=flexible,               %utilizar la opción flexible ya que el resto meten espacios entre letras para que ocupen todo el espacio de la caja (pero al copiar y pegar código nos lo ha estropeado)
    alsoletter={-,/,.},                 % gracias a esto podremos enfatizar o hacer keyword palabras como "apt-get"
    %emph={sudo, apt-get},          %palabras especiales que se marcarán
    classoffset=0,
    emph={sudo,},
    emphstyle=\color{red},
    classoffset=1,
    %emph={adb, add-apt-repository, am, android, apt-get, brctl, cat, chmod, dpkg, echo, egrep, /etc/init.d/networking, export, grep, ifconfig, ifdown, ifup, ip, iwconfig, iwlist, java, killall, ln, less, ls, mkdir, modprobe, mv, netcfg, ping, route, sensors, sensors-detect, service, sort, tail, tee, touch, uname, vim, virsh, virt-clone, virt-install, virt-viewer, vncviewer, wget, wpa\_passphrase, wpa\_supplicant, xm}, %algunos de estos comandos están definidos en keywords pero así me los pone a todos del mismo color
    emphstyle=\color{BurntOrange},
    classoffset=0,
    escapechar=!,
    xleftmargin=1.41mm,
    xrightmargin=-0.71mm,
    rulecolor=\color{black}, %corrige el error de bordes que cambian de color cuando se tiene que hacer un salto de una línea con un color distinto del negro http://tex.stackexchange.com/questions/80556/lstlisting-border-bug-when-breaking-lines
    literate={ö}{{\"o}}1
         {ä}{{\"a}}1
         {ü}{{\"u}}1
         {á}{{\'{a}}}1
         {é}{{\'{e}}}1
         {í}{{\'{i}}}1
         {ó}{{\'{o}}}1
         {ú}{{\'{u}}}1
         {ñ}{{\~{n}}}1
         {Á}{{\'{A}}}1
         {É}{{\'{E}}}1
         {Í}{{\'{I}}}1
         {Ó}{{\'{O}}}1
         {Ú}{{\'{U}}}1
         {Ñ}{{\~{N}}}1
         {¿}{{?`}}1
}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}\begin{minipage}{0.95\linewidth}#1#2#3\end{minipage}}}} %el minipage me asegura que si el texto de un caption ocupa más de una línea las siguientes líneas quedarán alineadas con respecto a la primera el hspace de 15pt
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
\addto\captionsspanish{\renewcommand*\lstlistingname{C\'odigo}}
\addto\captionsspanish{\renewcommand*\lstlistlistingname{\'Indice de c\'odigo}}

\usepackage{chngcntr} % Sirve para numerar figuras, tablas, etc según numSección.númElemento http://www.physicsforums.com/showthread.php?t=290236
\counterwithin{figure}{section}
\AtBeginDocument{\counterwithin{lstlisting}{section}} 

\renewcommand{\captionfont}{\color{ColorSecundario}}
\renewcommand{\captionlabelfont}{\bf}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}

\begin{document}

\section{Sección 1}
\section{Sección 2}
\section{Sección 3}
\section{Sección 4}

Here it hangs :-)

\begin{figure}[h!]
    \centering
    \includegraphics[width=0.25\textwidth]{clipart/hombreNegociosMovil.jpeg}
    \includegraphics[width=0.5\textwidth]{clipart/paradaAutobusAlReves.jpg}
    \caption{Bytewalla en el poblado: tranferencia de información del móvil a estafeta}
\end{figure}

But not here :-(

\begin{lstlisting}[belowcaptionskip=0.5em,language=java,caption=Fragmento concerniente a los métodos constructores de la clase Fichero.java]
/* Constructor de un objeto Fichero a partir de un fichero en disco
* Es por ello que se han de generar todos los datos pertenecientes a este fichero
*/
private Fichero(File fichero) throws IOException {
//Se ha omitido el código
}

/*
* Por el contrario podemos querer generar un fichero "virtual", representación de un fichero que posee otro nodo
* Para ello se nos deberá proporcionar la información de este fichero
* La variable nuevo indica si este es un fichero del que no se tenía constancia o si este es un fichero que se va a recrear a partir de trozos, que no está completo
* En el caso de ser un fichero nuevo la información de si se posee este fichero o no se rellenará a NO_EN_MEMORIA ya que sólo se nos enviará el nombre, hashes y tamaños
* */
public Fichero(String nombre, Object bloques[][], Map<String, Long> poseedoresDelFichero, boolean nuevo)
{
//Se ha omitido el código
}
\end{lstlisting}

\end{document}
  • 1
    Please add to your question a MWE illustrating the problem. I ask you for this MWE since this simple document with the default settings \documentclass{article} \usepackage[hang]{caption} \usepackage{listings} \begin{document} \begin{lstlisting}[caption={A really long test caption, it is so long that it actually spans two lines for this example}] test \end{lstlisting} \end{document} produces the expected result. – Gonzalo Medina Aug 13 '13 at 22:55
  • Maybe it's not very minimal but at least it looks very similar to the photos. After all I've just taken a small part of the tweaks I've done for my thesis, I know I should have used memoir class (I learnt it today, after months using the wrong class T_T ) but it's too late now – Álvaro Aug 13 '13 at 23:38
5

You better use \DeclareCaptionBox instead of \DeclareCaptionFormat to typeset captions in customized boxes since this leaves the format setting (in this case: format=hang) intact.

Unfortunately \DeclareCaptionBox is not documented yet since I didn't found the time so far to update the documentation to version 3.3 of the caption package. BTW: \DeclareCaptionBox is offered since version 3.3, so maybe you need to update your caption package resp. your TeX distribution for using this feature.

Furthermore you don't need the \hspace{15pt} trick to get a margin of 15pt here, just use the option margin=15pt instead. When collecting your caption options, and making the suggested changes, we have in total:

% Settings for ordinary captions
\captionsetup{skip=20pt,format=hang,font={color=ColorSecundario},labelfont=bf}

% Special (additonal) settings for lstlisting captions
\DeclareCaptionBox{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{#2}}}
\captionsetup[lstlisting]{box=listing,font={color=white,bf,footnotesize},singlelinecheck=false,margin=15pt}

enter image description here

As complete example:

\documentclass[12pt,a4paper,twoside]{article}
\usepackage[utf8]{inputenc}
\usepackage{times}
\renewcommand{\rmdefault}{phv} % Arial
\renewcommand{\sfdefault}{phv} % Arial
\usepackage[T1]{fontenc}

\usepackage[spanish,es-noshorthands]{babel}

\usepackage[top=2.5cm, bottom=2.5cm, inner=2.5cm, outer=3.5cm]{geometry}
\usepackage[pdftex,demo]{graphicx}
\usepackage{caption,subcaption}
\usepackage[usenames,dvipsnames]{xcolor} 

\definecolor{ColorPrincipal}{cmyk}{0,0.89,0.94,0.28} %este es el color BrickRed
\definecolor{ColorSecundario}{cmyk}{0,0.51,1,0} %este es el color BurntOrange
\definecolor{ColorTerciario}{cmyk}{0.40,0.80,0.20,0} %este es el color DarkOrchid
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\usepackage{listings}
\definecolor{ColorPrincipal}{RGB}{0,0,0}
\lstset{ %
    language=bash,                      % the language of the code
    %basicstyle=\footnotesize,      % the size of the fonts that are used for the code
    basicstyle=\normalsize\ttfamily,
    numbers=left,               % where to put the line-numbers
    numberstyle=\footnotesize,      % the size of the fonts that are used for the line-numbers
    stepnumber=1,               % the step between two line-numbers. If it's 1, each line will be numbered
    numbersep=1em,              % how far the line-numbers are from the code
    aboveskip=1em,              % espacio por encima del listing (1 línea)
    belowskip=0.2em,            % espacio por debajo del listing (1 línea según mis mediciones con la regla tengo que poner -1.8) ACTUALIZACIÓN con el marco del listing: sin espacio= -0.8em con una línea de espacio -0.8+1=0.2em
    %belowcaptionskip=0.5em,        % Esto hay que ponerlo individualmente a los captions que ocupen dos líneas
    backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
    showspaces=false,                   % show spaces adding particular underscores
    showstringspaces=false,         % underline spaces within strings
    showtabs=false,                     % show tabs within strings adding particular underscores
    frame=single,                       % adds a frame around the code
    frameround=fttf,            % t hace la esquina redondeada y f que sea en punta
    tabsize=2,                          % sets default tabsize to 2 spaces
    captionpos=t,                       % sets the caption-position to top
    breaklines=true,                    % sets automatic line breaking
    breakatwhitespace=true,             % sets if automatic breaks should only happen at whitespace
    title=\lstname,                   % show the filename of files included with \lstinputlisting; also try caption instead of title
    numberstyle=\scriptsize\color{gray},    % line number style
    keywordstyle=\color{blue},      % keyword style
    commentstyle=\color{dkgreen},       % comment style
    stringstyle=\color{mauve},      % string literal style
    escapeinside={\%*}{*)},         % if you want to add a comment within your code
    %morekeywords={*,...},              % if you want to add more keywords to the set
    %keywordstyle=\color{blue},
    columns=flexible,               %utilizar la opción flexible ya que el resto meten espacios entre letras para que ocupen todo el espacio de la caja (pero al copiar y pegar código nos lo ha estropeado)
    alsoletter={-,/,.},                 % gracias a esto podremos enfatizar o hacer keyword palabras como "apt-get"
    %emph={sudo, apt-get},          %palabras especiales que se marcarán
    classoffset=0,
    emph={sudo,},
    emphstyle=\color{red},
    classoffset=1,
    %emph={adb, add-apt-repository, am, android, apt-get, brctl, cat, chmod, dpkg, echo, egrep, /etc/init.d/networking, export, grep, ifconfig, ifdown, ifup, ip, iwconfig, iwlist, java, killall, ln, less, ls, mkdir, modprobe, mv, netcfg, ping, route, sensors, sensors-detect, service, sort, tail, tee, touch, uname, vim, virsh, virt-clone, virt-install, virt-viewer, vncviewer, wget, wpa\_passphrase, wpa\_supplicant, xm}, %algunos de estos comandos están definidos en keywords pero así me los pone a todos del mismo color
    emphstyle=\color{BurntOrange},
    classoffset=0,
    escapechar=!,
    xleftmargin=1.41mm,
    xrightmargin=-0.71mm,
    rulecolor=\color{black}, %corrige el error de bordes que cambian de color cuando se tiene que hacer un salto de una línea con un color distinto del negro http://tex.stackexchange.com/questions/80556/lstlisting-border-bug-when-breaking-lines
    literate={ö}{{\"o}}1
         {ä}{{\"a}}1
         {ü}{{\"u}}1
         {á}{{\'{a}}}1
         {é}{{\'{e}}}1
         {í}{{\'{i}}}1
         {ó}{{\'{o}}}1
         {ú}{{\'{u}}}1
         {ñ}{{\~{n}}}1
         {Á}{{\'{A}}}1
         {É}{{\'{E}}}1
         {Í}{{\'{I}}}1
         {Ó}{{\'{O}}}1
         {Ú}{{\'{U}}}1
         {Ñ}{{\~{N}}}1
         {¿}{{?`}}1
}
\addto\captionsspanish{\renewcommand*\lstlistingname{C\'odigo}}
\addto\captionsspanish{\renewcommand*\lstlistlistingname{\'Indice de c\'odigo}}

\usepackage{chngcntr} % Sirve para numerar figuras, tablas, etc según numSección.númElemento http://www.physicsforums.com/showthread.php?t=290236
\counterwithin{figure}{section}
\AtBeginDocument{\counterwithin{lstlisting}{section}} 

% Settings for ordinary captions
\captionsetup{skip=20pt,format=hang,font={color=ColorSecundario},labelfont=bf}

% Special (additonal) settings for lstlisting captions
\DeclareCaptionBox{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{#2}}}
\captionsetup[lstlisting]{box=listing,font={color=white,bf,footnotesize},singlelinecheck=false,margin=15pt}

\begin{document}

\section{Sección 1}
\section{Sección 2}
\section{Sección 3}
\section{Sección 4}

Here it hangs :-)

\begin{figure}[h!]
    \centering
    \includegraphics[width=0.25\textwidth]{clipart/hombreNegociosMovil.jpeg}
    \includegraphics[width=0.5\textwidth]{clipart/paradaAutobusAlReves.jpg}
    \caption{Bytewalla en el poblado: tranferencia de información del móvil a estafeta}
\end{figure}

But not here :-(

\begin{lstlisting}[belowcaptionskip=0.5em,language=java,caption=Fragmento concerniente a los métodos constructores de la clase Fichero.java]
/* Constructor de un objeto Fichero a partir de un fichero en disco
* Es por ello que se han de generar todos los datos pertenecientes a este fichero
*/
private Fichero(File fichero) throws IOException {
//Se ha omitido el código
}

/*
* Por el contrario podemos querer generar un fichero "virtual", representación de un fichero que posee otro nodo
* Para ello se nos deberá proporcionar la información de este fichero
* La variable nuevo indica si este es un fichero del que no se tenía constancia o si este es un fichero que se va a recrear a partir de trozos, que no está completo
* En el caso de ser un fichero nuevo la información de si se posee este fichero o no se rellenará a NO_EN_MEMORIA ya que sólo se nos enviará el nombre, hashes y tamaños
* */
public Fichero(String nombre, Object bloques[][], Map poseedoresDelFichero, boolean nuevo)
{
//Se ha omitido parte  del código
}
\end{lstlisting}

\end{document}
  • Thanks, it workds perfectly. I have written a post about how to update the package until the Ubuntu team fixes the package. – Álvaro Aug 14 '13 at 16:54
2

The declared hang option os not affecting lstlisting since you are using \DeclareCaptionFormat{listing}{...} to customize captions for listings.

You can add the hanging in your definition of the format: when defining the \colorbox for the listing caption, I initially boxed #1#2, meassured the width and used the width as the value for \hangindent to typeset the caption:

\DeclareCaptionFormat{listing}{%
  \makebox[\linewidth][l]{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{%
    \setbox0=\hbox{#1#2}%
    \begin{minipage}{\textwidth}
      \hangindent\wd0\strut#1#2#3\leavevmode
    \end{minipage}}%
  }%
}

A complete example:

\documentclass[12pt,a4paper,twoside]{article}
\usepackage[utf8]{inputenc}
\usepackage{times}
\renewcommand{\rmdefault}{phv} % Arial
\renewcommand{\sfdefault}{phv} % Arial
\usepackage[T1]{fontenc}

\usepackage[spanish,es-noshorthands]{babel}
\usepackage[top=2.5cm, bottom=2.5cm, inner=2.5cm, outer=3.5cm]{geometry}
\usepackage[demo]{graphicx}
\usepackage[skip=20pt,hang]{caption}
\usepackage{subcaption}
\usepackage[usenames,dvipsnames]{xcolor} 

\definecolor{ColorPrincipal}{cmyk}{0,0.89,0.94,0.28} %este es el color BrickRed
\definecolor{ColorSecundario}{cmyk}{0,0.51,1,0} %este es el color BurntOrange
\definecolor{ColorTerciario}{cmyk}{0.40,0.80,0.20,0} %este es el color DarkOrchid
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\usepackage{listings}
\definecolor{ColorPrincipal}{RGB}{0,0,0}
\lstset{ %
    language=bash,                      % the language of the code
    %basicstyle=\footnotesize,      % the size of the fonts that are used for the code
    basicstyle=\normalsize\ttfamily,
    numbers=left,               % where to put the line-numbers
    numberstyle=\footnotesize,      % the size of the fonts that are used for the line-numbers
    stepnumber=1,               % the step between two line-numbers. If it's 1, each line will be numbered
    numbersep=1em,              % how far the line-numbers are from the code
    aboveskip=1em,              % espacio por encima del listing (1 línea)
    belowskip=0.2em,            % espacio por debajo del listing (1 línea según mis mediciones con la regla tengo que poner -1.8) ACTUALIZACIÓN con el marco del listing: sin espacio= -0.8em con una línea de espacio -0.8+1=0.2em
    %belowcaptionskip=0.5em,        % Esto hay que ponerlo individualmente a los captions que ocupen dos líneas
    backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
    showspaces=false,                   % show spaces adding particular underscores
    showstringspaces=false,         % underline spaces within strings
    showtabs=false,                     % show tabs within strings adding particular underscores
    frame=single,                       % adds a frame around the code
    frameround=fttf,            % t hace la esquina redondeada y f que sea en punta
    tabsize=2,                          % sets default tabsize to 2 spaces
    captionpos=t,                       % sets the caption-position to top
    breaklines=true,                    % sets automatic line breaking
    breakatwhitespace=true,             % sets if automatic breaks should only happen at whitespace
    title=\lstname,                   % show the filename of files included with \lstinputlisting; also try caption instead of title
    numberstyle=\scriptsize\color{gray},    % line number style
    keywordstyle=\color{blue},      % keyword style
    commentstyle=\color{dkgreen},       % comment style
    stringstyle=\color{mauve},      % string literal style
    escapeinside={\%*}{*)},         % if you want to add a comment within your code
    %morekeywords={*,...},              % if you want to add more keywords to the set
    %keywordstyle=\color{blue},
    columns=flexible,               %utilizar la opción flexible ya que el resto meten espacios entre letras para que ocupen todo el espacio de la caja (pero al copiar y pegar código nos lo ha estropeado)
    alsoletter={-,/,.},                 % gracias a esto podremos enfatizar o hacer keyword palabras como "apt-get"
    %emph={sudo, apt-get},          %palabras especiales que se marcarán
    classoffset=0,
    emph={sudo,},
    emphstyle=\color{red},
    classoffset=1,
    %emph={adb, add-apt-repository, am, android, apt-get, brctl, cat, chmod, dpkg, echo, egrep, /etc/init.d/networking, export, grep, ifconfig, ifdown, ifup, ip, iwconfig, iwlist, java, killall, ln, less, ls, mkdir, modprobe, mv, netcfg, ping, route, sensors, sensors-detect, service, sort, tail, tee, touch, uname, vim, virsh, virt-clone, virt-install, virt-viewer, vncviewer, wget, wpa\_passphrase, wpa\_supplicant, xm}, %algunos de estos comandos están definidos en keywords pero así me los pone a todos del mismo color
    emphstyle=\color{BurntOrange},
    classoffset=0,
    escapechar=!,
    xleftmargin=1.41mm,
    xrightmargin=-0.71mm,
    rulecolor=\color{black}, %corrige el error de bordes que cambian de color cuando se tiene que hacer un salto de una línea con un color distinto del negro http://tex.stackexchange.com/questions/80556/lstlisting-border-bug-when-breaking-lines
    literate={ö}{{\"o}}1
         {ä}{{\"a}}1
         {ü}{{\"u}}1
         {á}{{\'{a}}}1
         {é}{{\'{e}}}1
         {í}{{\'{i}}}1
         {ó}{{\'{o}}}1
         {ú}{{\'{u}}}1
         {ñ}{{\~{n}}}1
         {Á}{{\'{A}}}1
         {É}{{\'{E}}}1
         {Í}{{\'{I}}}1
         {Ó}{{\'{O}}}1
         {Ú}{{\'{U}}}1
         {Ñ}{{\~{N}}}1
         {¿}{{?`}}1
}

\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
  \makebox[\linewidth][l]{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{%
    \setbox0=\hbox{#1#2}%
    \begin{minipage}{\textwidth}
      \hangindent\wd0\strut#1#2#3\leavevmode
    \end{minipage}}%
  }%
}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, 
singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
\addto\captionsspanish{\renewcommand*\lstlistingname{C\'odigo}}
\addto\captionsspanish{\renewcommand*\lstlistlistingname{\'Indice de c\'odigo}}

\usepackage{chngcntr} % Sirve para numerar figuras, tablas, etc según numSección.númElemento http://www.physicsforums.com/showthread.php?t=290236
\counterwithin{figure}{section}
\AtBeginDocument{\counterwithin{lstlisting}{section}} 

\renewcommand{\captionfont}{\color{ColorSecundario}}
\renewcommand{\captionlabelfont}{\bfseries}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}

\begin{document}

\section{Sección 1}
\section{Sección 2}
\section{Sección 3}
\section{Sección 4}

\begin{figure}[!ht]
    \centering
    \includegraphics[width=0.25\textwidth]{clipart/hombreNegociosMovil.jpeg}
    \includegraphics[width=0.5\textwidth]{clipart/paradaAutobusAlReves.jpg}
    \caption{Bytewalla en el poblado: tranferencia de información del móvil a estafeta}
\end{figure}

\begin{lstlisting}[caption={Fragmento concerniente a los métodos con algo más de texto constructores de la clase Fichero.java}]
test
test
\end{lstlisting}

\end{document}

enter image description here

  • Gracias, de todos modos es una suerte que el mantenedor del paquete caption justo haya publicado un post donde se ve que con la actualización de su paquete ya hay soporte para terceros paquetes, lo cual evita tener que parchear el código. Así los novatos tenemos la vida más fácil jeje – Álvaro Aug 14 '13 at 17:02
0

Update: Axel Sommerfeldt answer is right but as he said the caption package is not yet updated. In fact now there's a bug open for texlive as can be seen here. A quick patch to solve the issue is to create and run a makefile with the following code:

all: compile install

download:
    if [ ! -f ./caption/caption.ins ]; then \
        wget http://mirrors.ctan.org/macros/latex/contrib/caption.zip ;\
        unzip caption.zip ;\
    fi

compile: download
    cd caption;\
    latex caption.ins

documentation: compile
    cd caption;\
    latex caption-eng.tex;\
    #latex caption-deu.tex;\
    #latex caption-rus.tex;

install:
    if [ `whoami` != root ]; then \
        echo "This must be run as root" ;\
    else \
        RUTACAPTION=$$(kpsewhich caption.sty|xargs dirname) ;\
        echo "The files in $$RUTACAPTION will be backed up in a folder called caption.old" ;\
        cp -R $$RUTACAPTION caption.old ;\
        cp  ./caption/*.sty $$RUTACAPTION ;\
        sudo texhash ;\
    fi

clean:
    rm caption.zip
    rm -R caption

After that the command \DeclareCaptionBox works

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.