Ich schreibe einen Lehrplan mit spezifischen Lehrplananforderungen. Aktivitäten werden mit diesen Anforderungen gekennzeichnet, um die Übereinstimmung zu demonstrieren. Ich möchte ein Etikettierungs- oder Indexierungssystem verwenden, um die Übereinstimmungsinstanzen zu kennzeichnen und dann auf alle Seiten zu verweisen, auf denen eine Übereinstimmungsinstanz auftritt.
Gibt es ein Paket, das wie in einem Index auf alle Seiten mit derselben Bezeichnung verweist, mir aber erlaubt, die Seiten für diese Bezeichnung an einer beliebigen Stelle im Dokument auszudrucken?
Dieser Bedarf scheint Elemente von \label - \ref und von \index zu haben.
Ich habe kein minimales funktionierendes Beispiel, aber was ich möchte, würde ungefähr so aussehen.
\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}
Antwort1
Ich sehe, dass Nicola nur eine Glossarversion erstellt hat, aber hier ist meine abgespeckte Makeindex-Version.
Sie möchten lediglich einen Indexstil, der jede Seitenliste in einer Definition statt in einem Schriftsatz speichert, sagen wir foo.ist
:
preamble
"\n\\makeatletter{"
postamble
"}\n\\makeatother\n"
item_0 "}\n\\@namedef{"
delim_0 "}{"
Dann
pdflatex file
makeindex -s foo.ist file
pdflatex file
sollte die obige Ausgabe aus einem Dokument wie diesem erzeugen
\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}
Antwort2
Hier ist ein Beispiel, dasglossaries
:
\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}
Erstellungsprozess (vorausgesetzt, die Datei heißt myDoc.tex
):
pdflatex myDoc
makeglossaries myDoc
pdflatex myDoc
makeglossaries
ist ein Perl-Skript, das makeindex
mit allen erforderlichen gesetzten Schaltern aufgerufen wird.
Wenn Sie Perl nicht installiert haben, gibt es alternativ ein einfaches Lua-Skript:
pdflatex myDoc
makeglossaries-lite myDoc
pdflatex myDoc
Jeder Build-Prozess erzeugt:
Der rote Text kennzeichnet einen Hyperlink. 1
Nach der Beschreibung steht die Seitenzahl, auf der der Eintrag referenziert wurde.
Mit dem Erweiterungspaketglossaries-extra
noindex
Mit der Option können Sie die automatische Indizierung individuell unterdrücken .
\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}
Der Build-Prozess ist derselbe.
Sie können den Stil ändern. Beispiel:
\printglossary[title={Requirements},style=index]
Es gibtviele vordefinierte Stile zur Auswahl.
Für die Zukunft wird es bald einen anderen Ansatz geben, derbib2gls
anstelle von makeglossaries
/ makeglossaries-lite
. Ich habe es hier hinzugefügt, falls jemand diese Frage später findet.
Erstellen Sie eine .bib
Datei mit beispielsweise folgendem Namen 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.}
}
Das Dokument myDoc.tex
lautet nun:
\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}
Der Build-Prozess ist:
pdflatex myDoc
bib2gls myDoc
pdflatex myDoc
Es erfolgt kein Aufruf, makeindex
da bib2gls
gleichzeitig die Einträge aus der .bib
Datei abgeholt und sortiert und die Standorte aus der .aux
Datei gesammelt werden.
Die Unterschiede liegen hier in der Verwendung der record
Optionen und \GlsXtrLoadResources
. Der Befehl \makeglossaries
ist nicht erforderlich und das Glossar wird jetzt mit \printunsrtglossary
statt gedruckt \printglossary
.