마지막에 텍스트를 다양한 그룹으로 누적하는 방법은 무엇입니까?

마지막에 텍스트를 다양한 그룹으로 누적하는 방법은 무엇입니까?

도와주세요: .tex텍스트가 많은 파일(회고록 클래스)을 편집하고 있는데 중요한 질문, 인용문, 단어 등과 같은 문장을 모아서 해당 그룹으로 모아서 책 끝에 넣을 수 있도록 하고 싶습니다.

예를 들어:


.tex파일

\chapter{xyz}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam metus massa, molestie elementum tincidunt at, mollis et quam.
\collectQuestion{Donec viverra posuere lorem, ac sagittis eros tincidunt interdum?}
Phasellus feugiat id justo at pretium. 
Duis sed commodo velit. \collectPhrase{Cras tempus} fermentum leo, ac congue nisl convallis vel.

\chapter{abc}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam metus massa, molestie elementum tincidunt at, mollis et quam.
Donec viverra posuere lorem, ac sagittis eros tincidunt interdum.
Phasellus feugiat id justo at pretium. \collectQuestion{Sed placerat sodales lorem sed sodales?}
Duis sed commodo velit. Cras tempus fermentum leo, \collectPhrase{ac congue nisl} convallis vel.

.pdf파일 . . .

질문?

  1. Donec viverra posuere lorem, ac sagittis erostincidunt interdum?..pg x
  2. Sed placerat 소달 lorem sed 소달?..................................pg y

실없는 말:

  1. 크라스 템퍼스(pg x)
  2. AC 콩그 니슬(PG y)

답변1

약간의 아이러니함을 용서해주세요.

"회고록 수업"회고록의 기본 사용자 매뉴얼은 611페이지밖에 되지 않지만 다음과 같은 작업을 수행할 수 있다고 나와 있습니다.

\documentclass{memoir}
%\usepackage{hyperref}

\newcommand{\listofphrasesname}{Phrases:}%
\newlistof{listofphrases}{phr}{\listofphrasesname}%
\newlistentry{phrase}{phr}{0}%
\cftpagenumbersoff{phrase}%
%
\newcounter{phrases}
\renewcommand{\thephrases}{\arabic{phrases}.}
\newcommand{\collectPhrase}[1]{%
  #1%
  \stepcounter{phrases}%
  \addcontentsline{phr}{phrase}{\protect\numberline{\thephrases}#1~(pg~\thepage)}%
} 


\newcommand{\listofquestionsname}{Questions?}%
\newlistof{listofquestions}{qst}{\listofquestionsname}%
\newlistentry{question}{qst}{0}%
\cftpagenumberson{question}%
%
\newcounter{questions}
\renewcommand{\thequestions}{\arabic{questions}.}
\newcommand{\collectQuestion}[1]{%
  #1%
  \stepcounter{questions}%
  \addcontentsline{qst}{question}{\protect\numberline{\thequestions}#1}%
}
\makeatletter
\newlength\mypagenumwidth
\settowidth\mypagenumwidth{\@nameuse{cftquestionpagefont}pg~\hb@xt@\@pnumwidth{}}%
\renewcommand\cftquestionformatpnumhook[4]{%
  \hb@xt@\mypagenumwidth{\hfil\@nameuse{cftquestionpagefont}pg~#1}%
}%
\makeatother


\begin{document}

\tableofcontents

\chapter{xyz}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
metus massa, molestie elementum tincidunt at, mollis et 
quam. \collectQuestion{Donec viverra posuere lorem, ac sagittis
eros tincidunt interdum?} Phasellus feugiat id justo at pretium.
Duis sed commodo velit. \collectPhrase{Cras tempus} fermentum
leo, ac congue nisl convallis vel.

\chapter{abc}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
metus massa, molestie elementum tincidunt at, mollis et
quam. Donec viverra posuere lorem, ac sagittis eros tincidunt
interdum. Phasellus feugiat id justo at
pretium. \collectQuestion{Sed placerat sodales lorem sed
sodales?} Duis sed commodo velit. Cras tempus fermentum leo,
\collectPhrase{ac congue nisl} convallis vel.

\cleardoublepage
\listofquestions*

\listofphrases*

\end{document}

여기에 이미지 설명을 입력하세요

또는 질문/문구/페이지 번호의 너비를 추적하고 가장 넓은 질문 번호/문구 번호/페이지 번호의 너비를 나중에 LaTeX에서 사용할 수 있는 레이블에 저장하는 작업을 수행할 수 있습니다. 페이지 번호가 포함된 너비 설정을 위해 실행 \cftqestionnumwidth이 검색됩니다 .\cftphrasenumwidth\hbox

\documentclass{memoir}
%\usepackage{hyperref}

\makeatletter

\newcommand{\listofphrasesname}{Phrases:}%
\newlistof{listofphrases}{phr}{\listofphrasesname}%
\newlistentry{phrase}{phr}{0}%
\cftpagenumbersoff{phrase}%
%
\newcounter{phrases}
\renewcommand{\thephrases}{\arabic{phrases}.}
\newlength\maxphrasenumwidth
\setlength\maxphrasenumwidth{0pt}%
\newcommand{\collectPhrase}[1]{%
  #1%
  \stepcounter{phrases}%
  \begingroup
  \settowidth{\@tempdima}{\@nameuse{cftphrasepagefont}\thephrases~}%
  \ifdim\@tempdima>\maxphrasenumwidth
    \setlength\maxphrasenumwidth\@tempdima
    \global\maxphrasenumwidth\maxphrasenumwidth
  \fi
  \endgroup
  \addcontentsline{phr}{phrase}{%
    \protect\numberline{\protect\hfill\thephrases\protect~}%
            #1\protect~(pg\protect~\thepage)%
  }%
}
\AtBeginDocument{%
  \@ifundefined{r@maxphrasenumwidth}{%
    \settowidth\cftphrasenumwidth{\@nameuse{cftphrasepagefont}100.~}%
  }{%
    \setlength\cftphrasenumwidth{\r@maxphrasenumwidth}%
  }%
}%
\AtEndDocument{%
  \immediate\write\@auxout{%
    \string\newlabel{maxphrasenumwidth}{\the\maxphrasenumwidth}%
  }%
}%


\newlength\mypagenumwidth
\newlength\mypagenumsep
\newcommand{\listofquestionsname}{Questions?}%
\newlistof{listofquestions}{qst}{\listofquestionsname}%
\newlistentry{question}{qst}{0}%
\cftpagenumberson{question}%
\newcounter{questions}
\renewcommand{\thequestions}{\arabic{questions}.}
\newlength\maxquestnumwidth
\setlength\maxquestnumwidth{0pt}%
\newlength\maxpagenumwidth
\setlength\maxpagenumwidth{0pt}%
\newcommand{\collectQuestion}[1]{%
  #1%
  \stepcounter{questions}%
  \begingroup
  \settowidth{\@tempdima}{\@nameuse{cftquestionpagefont}\thequestions~}%
  \ifdim\@tempdima>\maxquestnumwidth
    \setlength\maxquestnumwidth\@tempdima
    \global\maxquestnumwidth\maxquestnumwidth
  \fi
  \settowidth{\@tempdima}{\@nameuse{cftquestionpagefont}pg~\thepage}%
  \ifdim\@tempdima>\maxpagenumwidth
    \setlength\maxpagenumwidth\@tempdima
    \global\maxpagenumwidth\maxpagenumwidth
  \fi
  \endgroup
  \addcontentsline{qst}{question}{%
    \protect\numberline{\protect\hfill\thequestions\protect~}#1%
  }%
}%
\AtBeginDocument{%
  \settowidth\mypagenumsep{\@nameuse{cftquestionpagefont}m}%
  \setlength\mypagenumsep{1.5\mypagenumsep}%
  \@ifundefined{r@maxquestnumwidth}{%
    \settowidth\cftquestionnumwidth{\@nameuse{cftquestionpagefont}100.~}%
  }{%
    \setlength\cftquestionnumwidth{\r@maxquestnumwidth}%
  }%
  \@ifundefined{r@maxpagenumwidth}{%
    \settowidth\mypagenumwidth{%
      \@nameuse{cftquestionpagefont}pg~\hb@xt@\@pnumwidth{}%
    }%
  }{%
    \setlength\mypagenumwidth{\r@maxpagenumwidth}%
  }%
  \cftinsertcode{questionrightadjust}{%
     \setpnumwidth{\mypagenumwidth}%
     \setrmarg{\dimexpr\mypagenumsep+\mypagenumwidth\relax}%
  }%
  \cftinserthook{qst}{questionrightadjust}%
}%
\AtEndDocument{%
  \immediate\write\@auxout{%
    \string\newlabel{maxquestnumwidth}{\the\maxquestnumwidth}%
  }%
  \immediate\write\@auxout{%
    \string\newlabel{maxpagenumwidth}{\the\maxpagenumwidth}%
  }%
}%
\renewcommand\cftquestionformatpnumhook[4]{%
   \hb@xt@\mypagenumwidth{\@nameuse{cftquestionpagefont}pg~#1\hfil}%
    %\hb@xt@\mypagenumwidth{\@nameuse{cftquestionpagefont}pg\hfil#1}%
    %\hbox{\@nameuse{cftquestionpagefont}pg~#1}%
}%
\makeatother


\begin{document}

\tableofcontents

\chapter{xyz}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
metus massa, molestie elementum tincidunt at, mollis et 
quam. \collectQuestion{Donec viverra posuere lorem, ac sagittis
eros tincidunt interdum?} Phasellus feugiat id justo at pretium.
Duis sed commodo velit. \collectPhrase{Cras tempus} fermentum
leo, ac congue nisl convallis vel.

\chapter{abc}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
metus massa, molestie elementum tincidunt at, mollis et
quam. Donec viverra posuere lorem, ac sagittis eros tincidunt
interdum. Phasellus feugiat id justo at
pretium. \collectQuestion{Sed placerat sodales lorem sed
sodales?} Duis sed commodo velit. Cras tempus fermentum leo,
\collectPhrase{ac congue nisl} convallis vel.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.
\collectPhrase{ac congue nisl}.

\newpage\setcounter{page}{1000}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
metus massa, molestie elementum tincidunt at, mollis et quam.
\collectQuestion{Sed placerat sodales lorem sed
sodales?} \collectPhrase{Cras tempus} fermentum
leo, ac congue nisl convallis vel.


\cleardoublepage

\listofquestions*

\listofphrases*

\end{document}

여기에 이미지 설명을 입력하세요

답변2

마지막에 질문과 구문을 표시된 순서대로 작성하려면 다음을 수행하세요.

\documentclass[a4paper]{memoir}

\usepackage{xparse}

\makeatletter
\newcommand{\mdotfill}[1][1em]{%
  \leavevmode
  \linebreak[0]%
  \mbox{}\nobreak
  \cleaders \hb@xt@ .44em{\hss.\hss}\hskip #1 plus 1fill
  \kern\z@
}
\makeatother

\ExplSyntaxOn
\NewDocumentCommand{\collectQuestion}{m}
 {
  \naib_collect:Nnn \g_naib_collect_question_seq { #1 } { \mdotfill }
 }
\NewDocumentCommand{\collectPhrase}{m}
 {
  \naib_collect:Nnn \g_naib_collect_phrase_seq { #1 } { \nobreakspace }
 }

\NewDocumentCommand{\printQuestions}{}
 {
  \begin{enumerate}
  \seq_use:Nn \g_naib_collect_question_seq {}
  \end{enumerate}
 }
\NewDocumentCommand{\printPhrases}{}
 {
  \begin{enumerate}
  \seq_use:Nn \g_naib_collect_phrase_seq {}
  \end{enumerate}
 }

\int_new:N \g_naib_collect_int
\seq_new:N \g_naib_collect_question_seq
\seq_new:N \g_naib_collect_phrase_seq

\cs_new_protected:Nn \naib_collect:Nnn
 {
  \int_gincr:N \g_naib_collect_int
  \label{ naib @ \int_to_roman:n { \g_naib_collect_int } }
  \naib_collect_append:Nenn
   #1
   { naib @ \int_to_roman:n { \g_naib_collect_int } } % the generated label
   { #2 } % the text
   { #3 } % the separation
 }

\cs_new_protected:Nn \naib_collect_append:Nnnn
 {
  \seq_gput_right:Nn #1 { \naib_collect_print:nnn {#2}{#3}{#4} }
 }
\cs_generate_variant:Nn \naib_collect_append:Nnnn { Ne }

\cs_new_protected:Nn \naib_collect_print:nnn
 {
  \item #2#3(pg.\nobreakspace\pageref{#1})
 }
\ExplSyntaxOff

\begin{document}

\chapter{xyz}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam metus massa, molestie elementum 
tincidunt at, mollis et quam.\collectQuestion{Donec viverra posuere lorem, ac sagittis eros tincidunt 
interdum feugiat?} Phasellus feugiat id justo at pretium. Duis sed commodo velit.\collectPhrase{Cras 
tempus} fermentum leo, ac congue nisl convallis vel.

\chapter{abc}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam metus massa, molestie elementum 
tincidunt at, mollis et quam. Donec viverra posuere lorem, ac sagittis eros tincidunt interdum. 
Phasellus feugiat id justo at pretium. \collectQuestion{Sed placerat sodales lorem sed sodales?} Duis 
sed commodo velit. Cras tempus fermentum leo, \collectPhrase{ac congue nisl} convallis vel.

\chapter{QP}

\section{Questions}

\printQuestions

\section{Phrases}

\printPhrases

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보