Insertar una lista de elementos dos veces en el documento.

Insertar una lista de elementos dos veces en el documento.

Estoy escribiendo mi tesis y he definido mi propio comando de apéndice (realmente estoy haciendo esto con prisa, por lo que puede haber formas de hacerlo mejor). Lo que me molesta en este momento es que debo incluir una lista de apéndices dos veces en el documento, una vez antes de que comience la tesis real, donde están el ToC, el LoF y el LoT, y luego, además, al final, antes de los apéndices.

Pero no funciona. ¿Dónde me falta algo?

NOTA: He redefinido el comando de sección para obtener el formato solicitado, esa es también la razón para usar el comando de sección en \prilogamacro, para obtener el mismo formato. Además, tuve que renovar el contador de seccionamiento para que fuera alfabético.

MWE:

\documentclass[a4paper,onecolumn,11pt,twoside]{article}
\usepackage{lipsum}

\usepackage{tocloft}
\newcommand{\listprilogename}{\normalsize SEZNAM PRILOG}
\newlistof{priloge}{pr}{\listprilogename}

\newcommand{\prilogalist}[1]{\refstepcounter{priloge}\addcontentsline{pr}{priloge}
{\protect\numberline{Priloga\;\Alph{priloge}}\hspace{1.6cm}#1}\par}

\newcommand{\priloga}[1]{\prilogalist{#1}\section{#1}}

\usepackage{titlesec}
\titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
\titlespacing*{\section}{0pt}{*0.2}{*0.05}

\begin{document}

\clearpage
\section*{List of Appendices}
\listofpriloge 

\section{Introduction}
\lipsum

\clearpage
\section*{Appendices}
\listofpriloge %this command doesn't print anything :S

\setcounter{section}{0}
\renewcommand\thesection{\Alph{section}}

\clearpage
\priloga{Additional content}
\lipsum[1-5]

\end{document}

Respuesta1

El problema es que \@starttoc(se usa internamente para leer toda la lista de... archivos ingresa el archivo existente para mostrar la lista pero lo abre para escribir y comenzar a recopilar la nueva lista para esta ejecución. Eso borra el archivo para que no pueda usarlo dos veces.

Esto simplemente redefine localmente el comando solo para ingresar y no para abrir el archivo para escribir. Esto es seguro siempre que el comando se emita nuevamente antes de los apéndices para que el archivo esté abierto en ese punto.

\documentclass[a4paper,onecolumn,11pt,twoside]{article}
\usepackage{lipsum}

\usepackage{tocloft}
\newcommand{\listprilogename}{\normalsize SEZNAM PRILOG}
\newlistof{priloge}{pr}{\listprilogename}

\newcommand{\prilogalist}[1]{\refstepcounter{priloge}\addcontentsline{pr}{priloge}
{\protect\numberline{Priloga\ \Alph{priloge}}\hspace{1.6cm}#1}\par}

\newcommand{\priloga}[1]{\prilogalist{#1}\section{#1}}

\usepackage{titlesec}
\titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
\titlespacing*{\section}{0pt}{*0.2}{*0.05}

\begin{document}

\clearpage
\section*{List of Appendices}

{\expandafter\def\csname @starttoc\endcsname#1{\InputIfFileExists{\jobname.#1}{}{}}%
\listofpriloge 
}



\section{Introduction}
\lipsum

\clearpage
\section*{Appendices}
\listofpriloge %this command doesn't print anything :S

\setcounter{section}{0}
\renewcommand\thesection{\Alph{section}}

\clearpage
\priloga{Additional content}
\lipsum[1-5]

\end{document}

Respuesta2

David ya ha explicado por qué su enfoque inicial no funcionó. Aquí hay otra posible solución, definiendo otro comando \listofprilogei(con un archivo externo asociado con .priextensión). También corregí el problema con los \hspacecomandos en su código original que causaban hboxes demasiado llenos. El nuevo comando \listofprilogeise puede utilizar de forma segura en cualquier punto del documento:

\documentclass[a4paper,onecolumn,11pt,twoside]{article}
\usepackage{lipsum}
\usepackage{tocloft}
\usepackage{titlesec}

\titleformat{\section}
  {\normalfont\normalsize\bfseries}{\thesection}{1em}{}
\titlespacing*{\section}
  {0pt}{*0.2}{*0.05}
\newcommand{\listprilogename}{\normalsize SEZNAM PRILOG}
\newlistof{priloge}{pr}{\listprilogename}

\newlistentry{prilogi}{pr}{1}
\newlistentry{prilogii}{pri}{1}
\makeatletter
\renewcommand*\l@priloge{\@dottedtocline{1}{0em}{5.3em}}
\renewcommand*\l@prilogii{\@dottedtocline{1}{0em}{5.3em}}
\makeatother

\newcommand{\prilogalist}[1]{%
  \refstepcounter{priloge}%
  \addcontentsline{pr}{priloge}{\protect\numberline{Priloga\ \Alph{priloge}}#1}\par
\addcontentsline{pri}{priloge}
{\protect\numberline{Priloga\ \Alph{priloge}}#1}\par}

\newcommand{\priloga}[1]{\prilogalist{#1}\section{#1}}

\makeatletter
\renewcommand\contentsname{\listprilogename}
\newcommand\listofprilogei{%
    \section*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \vskip10pt\@starttoc{pri}%
    }
\makeatother

\begin{document}

\clearpage
\section*{List of Appendices}
\listofpriloge 

\section{Introduction}
\lipsum

\clearpage
\section*{Appendices}
\listofprilogei

\setcounter{section}{0}
\renewcommand\thesection{\Alph{section}}

\clearpage
\priloga{Additional content}
\lipsum[1-5]
\clearpage
\priloga{Some additional content}
\lipsum[1-5]

\end{document}

Por cierto, esta línea de tu código

\newcommand{\prilogalist}[1]{\refstepcounter{priloge}\addcontentsline{pr}{priloge}
{\protect\numberline{Priloga\;\Alph{priloge}}\hspace{1.6cm}#1}\par}

produce errores ya que está utilizando el comando de espaciado en modo matemático \;. En mi código utilicé espacio entre palabras normal.

información relacionada