Estou escrevendo um plano de estudos com requisitos curriculares específicos. As atividades são marcadas com esses requisitos para demonstrar o alinhamento. Quero usar um sistema de rotulagem ou indexação para marcar as instâncias de alinhamento e, em seguida, referir-me a todas as páginas onde ocorre uma instância de alinhamento.
Existe um pacote que fará referência a todas as páginas que contêm o mesmo rótulo, como em um índice, mas me permitirá imprimir as páginas desse rótulo em um ponto arbitrário do documento?
Esta necessidade parece ter elementos de \label - \ref e de \index.
Não tenho um exemplo mínimo de trabalho, mas o que eu quero seria algo assim.
\documentclass{article}
\begin{document}
\begin{description}
\item[CR1] This is a description of a requirement. \\ See page <LIST OF PAGES LABELED WITH CR1>
\item[CR2] This is a description of another requirement. \\ See page <LIST OF PAGES LABELED WITH CR2>
\end{description}
\section{Section 1}
This is an activity aligned with CR1. (\label{CR1} or \index{CR1})
This is an activity aligned with CR2. (\label{CR2} or \index{CR2})
\section{Section 2}
This is another activity aligned with CR1. (\label{CR1} or \index{CR1})
\end{document}
Responder1
Vejo que Nicola acabou de fazer uma versão de glossários, mas aqui está minha versão básica do makeindex.
Você quer apenas um estilo de índice que salve cada lista de páginas em uma definição, em vez de composição tipográfica, digamos foo.ist
:
preamble
"\n\\makeatletter{"
postamble
"}\n\\makeatother\n"
item_0 "}\n\\@namedef{"
delim_0 "}{"
Então
pdflatex file
makeindex -s foo.ist file
pdflatex file
deve produzir a saída acima de um documento como
\documentclass{article}
\usepackage{makeidx}
\makeindex
\def\listfor#1{\csname #1\endcsname}
\begin{document}
\printindex
\begin{description}
\item[CR1] This is a description of a requirement. \\ See pages \listfor{CR1}
\item[CR2] This is a description of another requirement. \\ See pages \listfor{CR2}
\end{description}
\section{Section 1}
This is an activity aligned with CR1\index{CR1}.
aa
\clearpage
This is an activity aligned with CR2\index{CR2}.
\section{Section 2}
This is another activity aligned with CR1\index{CR1}.
\section{Section 3}
This is an activity aligned with CR1\index{CR1}.
aa
\clearpage
This is an activity aligned with CR2\index{CR2}.
\section{Section 4}
This is another activity aligned with CR1\index{CR1}.
aa
\clearpage
aa
\clearpage
This is an activity aligned with CR2\index{CR2}.
\section{Section 4}
This is another activity aligned with CR1\index{CR1}.
\end{document}
Responder2
Aqui está um exemplo que usaglossaries
:
\documentclass{article}
\usepackage[colorlinks]{hyperref}% optional but if needed must come
% before glossaries.sty
\usepackage[nopostdot]{glossaries}
\makeglossaries
% syntax: \newglossaryentry{label}{options}
\newglossaryentry{CR1}{name={CR1},
description={This is a description of a requirement.}}
% Or
% syntax: \longnewglossaryentry{label}{options}{description}
\longnewglossaryentry{CR2}{name={CR2}}%
{This is a description of another requirement.
With a paragraph break.
}
\begin{document}
\printglossary[title={Requirements}]
\section{Section 1}
This is an activity aligned with CR1.\glsadd{CR1}% index only
This is an activity aligned with \gls{CR2}.% index and show name
\section{Section 2}
This is an activity aligned with \gls{CR1}.% index and show name
\end{document}
Processo de construção (assumindo que o arquivo é chamado myDoc.tex
):
pdflatex myDoc
makeglossaries myDoc
pdflatex myDoc
makeglossaries
é um script Perl que chama makeindex
com todas as opções necessárias definidas.
Alternativamente, se você não tiver o Perl instalado, há um script Lua leve:
pdflatex myDoc
makeglossaries-lite myDoc
pdflatex myDoc
Qualquer processo de construção produz:
O texto em vermelho indica um hiperlink. Após 1
a descrição está o número da página onde a entrada foi referenciada.
Com o pacote de extensãoglossaries-extra
você pode suprimir a indexação automatizada individualmente com a noindex
opção.
\documentclass{article}
\usepackage[colorlinks]{hyperref}% optional but if needed must come
% before glossaries.sty
\usepackage{glossaries-extra}
\makeglossaries
% syntax: \newglossaryentry{label}{options}
\newglossaryentry{CR1}{name={CR1},
description={This is a description of a requirement.}}
% Or
% syntax: \longnewglossaryentry{label}{options}{description}
\longnewglossaryentry{CR2}{name={CR2}}%
{This is a description of another requirement.
With a paragraph break.
}
\begin{document}
\printglossary[title={Requirements}]
\section{Section 1}
This is an activity aligned with CR1.\glsadd{CR1}% index only
This is an activity aligned with \gls{CR2}.% index and show name
\newpage
\section{Section 2}
This is an activity aligned with \gls{CR1}.% index and show name
Some minor reference to \gls[noindex]{CR2} that doesn't need
indexing.
\end{document}
O processo de construção é o mesmo.
Você pode mudar o estilo. Por exemplo:
\printglossary[title={Requirements},style=index]
Hámuitos estilos predefinidos para escolher.
Para referência futura, em algum momento haverá outra abordagem usandobib2gls
em vez de makeglossaries
/ makeglossaries-lite
. Eu adicionei aqui caso alguém encontre essa pergunta posteriormente.
Crie um .bib
arquivo chamado, digamos requirements.bib
:
@entry{CR1,
name={CR1},
description={This is a description of a requirement.}
}
@entry{CR2,
name={CR2},
description={This is a description of another requirement.
With a paragraph break.}
}
O documento myDoc.tex
agora é:
\documentclass{article}
\usepackage[colorlinks]{hyperref}% optional but if needed must come
% before glossaries.sty
\usepackage[record]{glossaries-extra}
\GlsXtrLoadResources[src={requirements}]% data in requirements.bib
\begin{document}
\printunsrtglossary[title={Requirements}]
\section{Section 1}
This is an activity aligned with CR1.\glsadd{CR1}% index only
This is an activity aligned with \gls{CR2}.% index and show name
\newpage
\section{Section 2}
This is an activity aligned with \gls{CR1}.% index and show name
Some minor reference to \gls[noindex]{CR2} that doesn't need
indexing.
\end{document}
O processo de construção é:
pdflatex myDoc
bib2gls myDoc
pdflatex myDoc
Não há chamada para buscar e classificar makeindex
simultaneamente bib2gls
as entradas do .bib
arquivo e coletar os locais do .aux
arquivo.
As diferenças aqui são o uso da record
opção e \GlsXtrLoadResources
. O comando \makeglossaries
não é necessário e o glossário agora é impresso com \printunsrtglossary
em vez de \printglossary
.