Befehle zur Unterstützung der Indizierung

Befehle zur Unterstützung der Indizierung

Ich möchte einfachere Möglichkeiten haben, große Texte wie Abschlussarbeiten, Berichte und Bücher zu indizieren. Ich habe hier viele Beiträge gefunden, in denen nach einem magischen Tool gefragt wurde, das dies automatisch erledigt. Und soweit ich den Kommentaren entnehmen konnte, glaubt niemand, dass eine Maschine so etwas tun kann.wichtigAUFGABE für uns.

Ich denke also, dass die beste Lösung zur Erleichterung unserer Indexierungsarbeit darin besteht, richtige persönliche Befehle zu erstellen (was mir bisher nicht so gut gelingt ...). Ich möchte zumindest Folgendes tun:

  1. Möglichkeit, das indexierte Wort im Text auszudrucken, um doppeltes Eintippen zu vermeiden

    (some text) word \index{word} ...
    

    mit der Befehlsdefinition \selfwie unten beschrieben bekomme ich, was ich will.

    \DeclareRobustCommand{\self}[1]{{#1}\index{#1}} %solves 1 
    
  2. Definieren Sie einen Befehl für Einträge innerhalb eines indexierten Wortes, das mehrfach wiederholt wird. Beispiel: Vermeiden Sie die Wiederholung von „Wort“.

    \index{word! entry1}, \index{word! entry1}, \index{word! entry1}...
    

Der folgende Befehl \submacht es.

    \DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}} %solves2
  1. Dasselbe wie bei 2, aber jetzt muss der Befehl eine Variable verwenden, die in Textteilen definiert ist (um das feste „Wort“ im vorherigen zu ersetzen). Ist das möglich? Siehe Versuch im Abschnitt „Especial“ im Beispiel unten

  2. Befehl zum Aufteilen von Indexeinträgen \splex( nVariablen) in mehrere Teile \index{}? Um zu vermeiden, makeindexdass alle Einträge in derselben Zeile gedruckt werden, wenn ich \index{Cramer, determinant, matrices}beispielsweise Folgendes verwende. Ich habe keine Ahnung, wie ich mit dem Schreiben des Befehls beginnen soll, insbesondere weil ich von einem allgemeinen Fall ausgehe, in dem die Anzahl der Einträge variiert. Meine Idee ist, Folgendes zu verwenden, \splex{Cramer, determinant, matrices}um \index{Cramer} \index{determinant} \index{matrices}im Text zu erzeugen.

Ich habe einige ähnliche Befehle in anderen Beispielen im Internet gefunden und passe sie meinem Interesse entsprechend an, aber bei manchen komme ich immer noch nicht dahinter. Sind die Befehle im folgenden Beispiel in Ordnung oder könnten sie verbessert/ersetzt werden? Und wie lassen sich Punkt 3 und 4 lösen?

\documentclass{article}
\usepackage{makeidx}
\makeindex
%\DeclareRobustCommand{\self}[1]{\texttt{#1}\index{#1}} %solves 1 but changes text style
\DeclareRobustCommand{\self}[1]{{#1}\index{#1}} %solves 1 
\DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}} %solves2
\newcommand{\subdef}[2]{\index{\subd!#1}} %attempt to 3
\begin{document}
  Usefull \self{commands}.

   (some text) \sub{entry1}. 
   (some text)  \sub{entry2}. 

    \newpage
    \section{Especial *NOT WORKING*}
    \def\subd{especial}
     Something1  \subdef{entry1}. 
     Something2  \subdef{entry2}. 
\printindex
\end{document}

Nachtrag

Wenn Sie auf ein gutes Tutorial zum Erstellen persönlicher Befehle (von einfachen bis hin zu komplexen Befehlen) verweisen können, posten Sie den Link bitte in den Kommentaren.

Antwort1

Ich bin mir nicht ganz sicher, ob ich verstehe, worauf Punkt 3 hinaus will. Ihr Befehl gibt 2 Argumente an, aber Sie verwenden nur eines in der Definition und Sie haben dort keinen Code, der das Argument in den Text einfügen würde, was ich in diesem Fall für erwünscht hielt. So wie ich Punkt 3 jedoch verstehe, ist das Problem damit gelöst, denke ich.

4 ist im Hinblick auf Ihre Wünsche einfacher zu verstehen. Meine Lösung ist jedoch etwas komplexer, da sie auf basiert etoolbox.

\documentclass{article}
\usepackage{makeidx,etoolbox}
\makeindex
\DeclareRobustCommand{\self}[1]{{#1}\index{#1}}% solves 1
\DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}}% solves2
\DeclareRobustCommand{\subdef}[1]{\texttt{#1}\index{\subd!#1}}% solves 3? (not sure I've understood the aim of 3)
% etoolbox manual p. 24
\newcommand\splex[1]{% solves 4
  \forcsvlist{\listadd\mylist}{#1}%
  \forlistloop{\index}{\mylist}}
\begin{document}
  Useful \self{commands}.

  (some text) \sub{entry1}.
  (some text)  \sub{entry2}.

  \section{Especial *WORKING*}
  \def\subd{especial}
  Something1  \subdef{entry1}.
  Something2  \subdef{entry2}.

  \section{Another test}
  \def\subd{another test}
  Something 3  \subdef{entry3}.
  Something 4 \subdef{entry4}.

  \section{Split commands}
  Nothing much to say.\splex{Cramer, determinant, matrices}

  \printindex
\end{document}

Text und Liste

verwandte Informationen