Wie kann ich alle Vorkommen eines Schlüsselworts taggen und dann auf alle Seiten verweisen, die dasselbe Tag enthalten?

Wie kann ich alle Vorkommen eines Schlüsselworts taggen und dann auf alle Seiten verweisen, die dasselbe Tag enthalten?

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.

Bildbeschreibung hier eingeben

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

makeglossariesist ein Perl-Skript, das makeindexmit 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:

Bild des Dokuments

Der rote Text kennzeichnet einen Hyperlink. 1Nach der Beschreibung steht die Seitenzahl, auf der der Eintrag referenziert wurde.

Mit dem Erweiterungspaketglossaries-extranoindexMit 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, derbib2glsanstelle von makeglossaries/ makeglossaries-lite. Ich habe es hier hinzugefügt, falls jemand diese Frage später findet.

Erstellen Sie eine .bibDatei 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.texlautet 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, makeindexda bib2glsgleichzeitig die Einträge aus der .bibDatei abgeholt und sortiert und die Standorte aus der .auxDatei gesammelt werden.

Die Unterschiede liegen hier in der Verwendung der recordOptionen und \GlsXtrLoadResources. Der Befehl \makeglossariesist nicht erforderlich und das Glossar wird jetzt mit \printunsrtglossarystatt gedruckt \printglossary.

verwandte Informationen