
Por favor me ajude: estou editando um .tex
arquivo (aula de memórias) com muito texto e quero coletar frases como perguntas importantes, citações, palavras, etc. e reuni-las em seus respectivos grupos e poder colocá-las no final do livro.
Por exemplo:
.tex
arquivo
\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
arquivo . . .
Questões?
- Donec viverra posuere lorem, ac sagittis eros tincidunt interdum?..pg x
- Sed placerat sodales lorem sed sodales?........................................pg y
Frases:
- Cras tempus (pg x)
- ac congue nisl (pg y)
Responder1
Por favor, perdoe-me pequenas dicas de ironia:
"A aula de memórias", que como manual básico do usuário do livro de memórias tem apenas 611 páginas, diz que é possível fazer algo assim:
\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}
Alternativamente, você pode fazer algo que monitore a largura do número da pergunta/frase/página e salve a largura do número da pergunta/número da frase/número da página mais largo em um rótulo a partir do qual pode ser usado no futuro LaTeX- as execuções serão recuperadas para definir \cftqestionnumwidth
/ \cftphrasenumwidth
/a largura \hbox
que contém o número da página:
\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}
Responder2
Se quiser escrever as perguntas e frases no final, na ordem em que apareceram:
\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}