문서에 요소 목록을 두 번 삽입합니다.

문서에 요소 목록을 두 번 삽입합니다.

나는 논문을 작성 중이고 나만의 부록 명령을 정의했습니다(정말 급하게 이 작업을 수행하고 있으므로 더 잘할 수 있는 방법이 있을 수 있습니다). 지금 저를 괴롭히는 점은 문서에 부록 목록을 두 번 포함해야 한다는 것입니다. 한 번은 ToC, LoF 및 LoT가 있는 실제 논문이 시작되기 전에, 그리고 추가로 부록 앞의 끝 부분에 포함해야 합니다.

하지만 작동하지 않습니다. 내가 어디에서 뭔가를 놓치고 있는 걸까요?

참고: 요청된 서식을 얻기 위해 섹션 명령을 재정의했습니다. 이는 \priloga동일한 서식을 얻기 위해 매크로에서 섹션 명령을 사용하는 이유이기도 합니다. 또한 절편 카운터를 알파벳순으로 갱신해야 했습니다.

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}

답변1

문제는 \@starttoc(내부적으로 모든 목록을 읽는 데 사용됩니다... 파일은 목록을 표시하기 위해 기존 파일을 입력하지만 이 실행을 위해 새 목록을 수집하기 시작하기 위해 쓰기 위해 파일을 엽니다. 그러면 파일이 지워져 사용할 수 없게 됩니다. 두 번요.

이는 쓰기 위해 파일을 열지 않고 입력만 하기 위해 명령을 로컬에서 재정의하는 것입니다. 부록 이전에 명령을 다시 실행하여 해당 지점에서 파일이 열려 있는 한 이는 안전합니다.

\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}

답변2

David는 초기 접근 방식이 작동하지 않은 이유를 이미 설명했습니다. 다른 명령을 정의하는 \listofprilogei(확장자가 있는 외부 관련 파일 사용 ) 또 다른 가능한 솔루션이 있습니다 .pri. 또한 \hspace과도한 hbox를 유발하는 원래 코드의 명령 문제를 수정했습니다 . 새 명령은 \listofprilogei문서의 어느 지점에서나 안전하게 사용할 수 있습니다.

\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}

그건 그렇고, 이 코드 줄은

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

수학 모드 간격 명령 \;을 사용하고 있으므로 오류가 발생합니다. 내 코드에서는 대신 일반적인 단어 간 공간을 사용했습니다.

관련 정보