Wie fasst man Texte am Ende in verschiedene Gruppen zusammen?

Wie fasst man Texte am Ende in verschiedene Gruppen zusammen?

Bitte helfen Sie: Ich bearbeite eine .texDatei (Memoirenklasse) mit viel Text und möchte Sätze wie wichtige Fragen, Zitate, Wörter usw. sammeln und sie in den entsprechenden Gruppen zusammenfassen und sie am Ende des Buches einfügen können.

Zum Beispiel:


.texDatei

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

.pdfDatei . . .

Fragen?

  1. Donec viverra posuere lorem, ac sagittis eros tincidunt interdum?..pg x
  2. Sed placerat sodales lorem sed sodales?.......................................Seite y

Phrasen:

  1. Cras tempus (Seite x)
  2. ac congue nisl (Seite y)

Antwort1

Bitte verzeihen Sie mir die leichte Ironie:

„Die Memoirenklasse“, das als grundlegendes Benutzerhandbuch für Memoiren nur 611 Seiten umfasst, besagt, dass man etwa Folgendes tun kann:

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

Bildbeschreibung hier eingeben

Alternativ können Sie etwas tun, das die Breite der Nummer der Frage/Phrase/Seite verfolgt und die Breite der breitesten Fragenummer/Phrasenummer/Seitennummer in einem Label speichert, von dem sie in zukünftigen LaTeX-Läufen abgerufen werden kann, um \cftqestionnumwidth// \cftphrasenumwidthdie Breite der Nummer festzulegen \hbox, die die Seitennummer enthält:

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

Bildbeschreibung hier eingeben

Antwort2

Wenn Sie die Fragen und Sätze am Ende in der Reihenfolge aufschreiben möchten, in der sie erschienen sind:

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

Bildbeschreibung hier eingeben

verwandte Informationen