Umwandlung von Labels in Stichworteinträge

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Umwandlung von Labels in Stichworteinträge

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » So 28. Dez 2025, 20:38

Ok die letzten 35 Stunden waren der reinste Hexen-Sabat:
Wir mussten noch das Problem mit den Seiten lösen ( Wenn ich hier von "WIR" meine ich Gemini - dem ich die Verwirklichung des Projektes verdanke - Ich war eher reduziert auf eine reine Kontroll-Instanz )
Wir mussten die Erstellung des Verzeichnisses auf fünf Kompilierungs-Stuffen aufteilen.
1.) Das Erzeugen des reinen Textes
2.) Das Erzeugen des Inhaltsverzeichnis
3.) Dann die Ableitung der Positionen im Text ( bis hier alles Lualatex )
4.) Dass Ordnen der Einträge ( makeindex )
5.) Dass generieren des fertigen PDF Dokuments

Dann hatten wir ein Problem mit dem Bluten unseres Verzeichnis Erstelungs-Code in den Text und mussten noch einmal alles Überarbeiten ( Wie geschrieben ein riessen Dank an Gemini )
Nun kommt noch eine letzte große Überarbeitung: Alles Lyx Compatibel zu machen.
Ich versuche im Anhang das fertige Dokument anzuhängen ( Es wäre zu viel alles hier zu Posten)
Dateianhänge
8LexikonVMitrichtigenTitelnStichwortverzeichnisProbe-Erweiterung.tex
Das fast fertige Beispiel Dokument
(308.29 KiB) 16-mal heruntergeladen

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » So 28. Dez 2025, 00:59

Damit die Seiten Zahlen stimmen Ändere folgendes:
\renewcommand{\label}[1]{%
    \oldlabel{##1}%
    \zlabel{idx-##1}%
    
    \begingroup
        \cleanLyXTitleTSM{##1}%
        \cleanLyXTitleTSMA{##1}%
        
        % Extraktion der Seite (stabilisiert sich im 3. Lauf)
        \edef\tsm@precisePage{\zref@extractdefault{idx-#1}{page}{\thepage}}%
        
        % A: Dein Kontroll-Ebenbild (.test)
        \immediate\write\tsmtestfile{ID: ##1 | Seite: \tsm@precisePage | Index: \tsm@cleanOutputA @ \tsm@cleanOutput}%

        % B: Die offizielle System-Eingabe (.idx)
        % WICHTIG: Hier muss exakt das Format \indexentry{Sort@Titel}{Seite} stehen
        \immediate\write\tsmidxfile{\string\indexentry{\tsm@cleanOutputA @ \string\textbf{Satz}: \tsm@cleanOutput}{\tsm@precisePage}}%
    \endgroup
    \ignorespaces
}
Und im Kopf:
\usepackage[nonewpage]{imakeidx}
% Wir taufen den Index 'tsm' und geben ihm den Titel 'Index'
\newwrite\tsmidxfile
\immediate\openout\tsmidxfile=\jobname.idx % Wir erzwingen die .idx Datei
Und zur Ausgabe:
\chapter*{Stichwortverzeichnis} % Oder dein gewünschter Titel
\addcontentsline{toc}{chapter}{Stichwortverzeichnis}
\input{\jobname.ind}

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » Sa 27. Dez 2025, 20:45

Ok Erweitert nun auf alle Theorem/Satz/Definition/...

Wichtig: Die Benennung die in den Boxen erscheinen soll muss klein geschrieben werden.

Ich habe gerade gesehen dass die Seitenzahlen nicht stimmen.

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » Sa 27. Dez 2025, 19:06

Ok, Titel sind jetzt auch gesäubert.

Neue SatzBox:
\makeatletter
\renewenvironment{SatzBox}[1][]{%
    \begin{mdframed}[style=satzstyle]%

    % Kapselung der Label-Logik
    \let\oldlabel\label
\renewcommand{\label}[1]{% <-- % verhindert Leerzeichen
    \oldlabel{##1}% <-- % verhindert Leerzeichen
    \begingroup%
        \cleanLyXTitleTSMA{##1}%
        \cleanLyXTitleTSM{##1}%
        \edef\tsm@doIndex{\noexpand\index[tsm]{\tsm@cleanOutputA @ \noexpand\textbf{Satz}: \tsm@cleanOutput}}%
        \tsm@doIndex %
    \endgroup%
    \ignorespaces% <-- schluckt alle Leerzeichen, die nach dem Label kommen
}

    \begin{satz}[#1]%
}{%
    \end{satz}%
    \end{mdframed}%
}
\makeatother
Neue cleanLyxTitelTSMA:

\newcommand{\cleanLyXTitleTSMA}[1]{%
    % Wir nutzen \StrSubstitute direkt für die Zuweisung.
    % Wichtig: Jedes Mal das vierte Argument (die Variable) nutzen!
    \StrSubstitute{#1}{satz:}{ }[\tsm@temp]%
    % --- Griechische Buchstaben (Unicode-Ebene) ---
    \StrSubstitute{\tsm@temp}{=0003B1}{α}[\tsm@temp]% alpha
    \StrSubstitute{\tsm@temp}{=0003B2}{β}[\tsm@temp]% beta
    \StrSubstitute{\tsm@temp}{=0003B3}{γ}[\tsm@temp]% gamma
    \StrSubstitute{\tsm@temp}{=0003B4}{δ}[\tsm@temp]% delta
    \StrSubstitute{\tsm@temp}{=0003BC}{μ}[\tsm@temp]% mu
    \StrSubstitute{\tsm@temp}{=0003C0}{π}[\tsm@temp]% pi
    \StrSubstitute{\tsm@temp}{=0003C3}{σ}[\tsm@temp]% sigma
    \StrSubstitute{\tsm@temp}{=0003C9}{ω}[\tsm@temp]% omega

    % --- Mathematische Operatoren & Symbole ---
    \StrSubstitute{\tsm@temp}{=002206}{Δ}[\tsm@temp]% Delta (Differenz)
    \StrSubstitute{\tsm@temp}{=00221E}{∞}[\tsm@temp]% Unendlich
    \StrSubstitute{\tsm@temp}{=002248}{≈}[\tsm@temp]% Ungefähr
    % 2. Umlaute & Scharfes S (Hex-Verschlüsselung)
    \StrSubstitute{\tsm@temp}{=0000E4}{ä}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000F6}{ö}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000FC}{ü}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000C4}{Ä}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000D6}{Ö}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000DC}{Ü}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000DF}{ß}[\tsm@temp]%

    % 3. Sonderzeichen & Interpunktion
    \StrSubstitute{\tsm@temp}{=000021}{!}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003F}{?}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002E}{.}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002C}{,}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003A}{:}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003B}{;}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000028}{(}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000029}{)}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002D}{-}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002F}{/}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000022}{"}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000027}{'}[\tsm@temp]%

    % 4. Formatierungs-Relikte & Leerzeichen
    \StrSubstitute{\tsm@temp}{_}{ }[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000020}{ }[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=}{}[\tsm@temp]% (Restliche Gleichheitszeichen entfernen)
    % 3. ELIMINIERUNG VON FÜLLWÖRTERN (Scharfe Analyse)
    % Wir setzen Leerzeichen um die Wörter, um Teilwort-Fehler zu vermeiden
    % (z.B. damit "Der" in "Dermatologie" nicht gelöscht wird).
    \StrSubstitute{ \tsm@temp\space}{ Der }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Die }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Das }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Ein }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Eine }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Einer }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ eines }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ einer }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ der }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ die }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ das }{ }[\tsm@temp]%

    % 4. Bereinigung von Doppel-Leerzeichen, die durch das Löschen entstanden sind
    \StrSubstitute{\tsm@temp}{ }{}[\tsm@temp]%
    % Führende/anhängende Leerzeichen entfernen (Trim)
    \StrSubstitute{\tsm@temp}{  }{}[\tsm@temp]% (Doppelte Leerzeichen zu einem)
    % 5. Globale Manifestation der Erkenntnis
    \global\let\tsm@cleanOutputA\tsm@temp
}
Wichtig kein StrTrim ( Sonst schreibt es sein Resultat in den Text )

Ganz wichtig Auch noch:
Anlegen des Verzeichnis immer mit:
\usepackage[nonewpage]{imakeidx}
% Wir taufen den Index 'tsm' und geben ihm den Titel 'Index'
\makeindex[name=tsm, title={Meine Stichworter}, columns=2]
Sonst geht das Eintragen falsch

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » Sa 27. Dez 2025, 15:11

Ja danke - dafür dass ich heute Morgen noch nicht wusste wie man einen Latex oder Lyx Befehl schreibt ist es sehr gut.

Ich habe nur noch folgende Probleme:

Ich muss nachträglich Exportieren und Manuell Konvertieren

Und ich muss die Zeile: \printindex[tsm] % Ergänzen

Und die Überschrift ist noch was kaputt

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » Sa 27. Dez 2025, 14:59

Ok, die Latex Version steht - Fehlt nur noch die Rückübersetzung nach Lyx:

Ich erzeuge das Verzeichnis mit:
\usepackage{imakeidx}
% Die Option [setup] oder das Weglassen von speziellen Pfaden hilft oft.
\makeindex[name=tsm, title={Stichwortverzeichnis}, options={-s gind.ist}]
Die Umsetzung der Einträge mit:
\makeatletter


% Die Reinigungs-Maschine für LyX-Labels
\newcommand{\cleanLyXTitleTSM}[1]{%
    % 1. Präfix entfernen
    \StrSubstitute{#1}{satz:}{}[\tsm@temp]%

    % 2. Umlaute & Scharfes S (Hex-Verschlüsselung)
    \StrSubstitute{\tsm@temp}{=0000E4}{ä}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000F6}{ö}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000FC}{ü}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000C4}{Ä}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000D6}{Ö}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000DC}{Ü}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000DF}{ß}[\tsm@temp]%

    % 3. Sonderzeichen & Interpunktion
    \StrSubstitute{\tsm@temp}{=000021}{!}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003F}{?}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002E}{.}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002C}{,}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003A}{:}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003B}{;}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000028}{(}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000029}{)}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002D}{-}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002F}{/}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000022}{"}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000027}{'}[\tsm@temp]%

    % 4. Formatierungs-Relikte & Leerzeichen
    \StrSubstitute{\tsm@temp}{_}{ }[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000020}{ }[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=}{}[\tsm@temp]% (Restliche Gleichheitszeichen entfernen)

    % 5. Globale Manifestation
    \global\let\tsm@cleanOutput\tsm@temp
}


\newcommand{\cleanLyXTitleTSMA}[1]{%
    % 1. Präfix entfernen
    \StrSubstitute{#1}{satz:}{}[\tsm@temp]%

    % 2. Umlaute & Scharfes S (Hex-Verschlüsselung)
    \StrSubstitute{\tsm@temp}{=0000E4}{ä}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000F6}{ö}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000FC}{ü}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000C4}{Ä}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000D6}{Ö}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000DC}{Ü}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=0000DF}{ß}[\tsm@temp]%

    % 3. Sonderzeichen & Interpunktion
    \StrSubstitute{\tsm@temp}{=000021}{!}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003F}{?}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002E}{.}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002C}{,}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003A}{:}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00003B}{;}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000028}{(}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000029}{)}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002D}{-}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=00002F}{/}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000022}{"}[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000027}{'}[\tsm@temp]%

    % 4. Formatierungs-Relikte & Leerzeichen
    \StrSubstitute{\tsm@temp}{_}{ }[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=000020}{ }[\tsm@temp]%
    \StrSubstitute{\tsm@temp}{=}{}[\tsm@temp]% (Restliche Gleichheitszeichen entfernen)
    % 3. ELIMINIERUNG VON FÜLLWÖRTERN (Scharfe Analyse)
    % Wir setzen Leerzeichen um die Wörter, um Teilwort-Fehler zu vermeiden
    % (z.B. damit "Der" in "Dermatologie" nicht gelöscht wird).
    \StrSubstitute{ \tsm@temp\space}{ Der }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Die }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Das }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Ein }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Eine }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ Einer }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ eines }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ einer }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ der }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ die }{ }[\tsm@temp]%
    \StrSubstitute{ \tsm@temp\space}{ das }{ }[\tsm@temp]%

    % 4. Bereinigung von Doppel-Leerzeichen, die durch das Löschen entstanden sind
    \StrSubstitute{\tsm@temp}{  }{ }[\tsm@temp]%
    % Führende/anhängende Leerzeichen entfernen (Trim)
    \StrTrim{\tsm@temp}{\tsm@temp}%

    % 5. Globale Manifestation der Erkenntnis
    \global\let\tsm@cleanOutputA\tsm@temp
}
Die Einträge mit:

\renewenvironment{SatzBox}[1][]{%
    % 1. Visuelle Manifestation
    \begin{mdframed}[style=satzstyle]%
    \begin{satz}[#1]%
    % --- Der "Label-Staubsauger" ---
    \let\oldlabel\label % Wir speichern das originale Label (die alte Kausalität)
    \renewcommand{\label}[1]{% % Wir definieren \label neu für den Bereich dieser Box
        \oldlabel{##1}% % 1. Das echte Label wird trotzdem gesetzt (Wichtig für Querverweise!)

        % 2. JETZT haben wir den Text! Das Argument #1 von \label ist dein Text.
        \cleanLyXTitleTSM{##1}% % Wir schicken den Text (##1) in deine Reinigungs-Funktion
        \cleanLyXTitleTSMA{##1}% % Wir schicken den Text (##1) in deine Reinigungs-Funktion

        % 3. Emission in den Index
        % Der bereinigte Text steht nun in \tsm@cleanOutput bereit.
        \index[tsm]{\tsm@cleanOutputA @ \noexpand\textbf{Satz}: \tsm@cleanOutput}%
    }
}{%
    \end{satz}%
    \end{mdframed}%
}
\makeatother
Und Schließlich die Anzeige mit:
\printindex[tsm]

Re: Umwandlung von Labels in Stichworteinträge

von Stefan Kottwitz » Sa 27. Dez 2025, 14:55

Sehr schön, dass Du es schaffen konntest!

Stefan

Re: Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » Sa 27. Dez 2025, 13:23

Lasst uns Captain Crunch spielen und über die Heimorgel das Telefonnetz steuern.

Ich habe einen Weg gefunden ein StichwortVerzeichnis zu erzeugen.

Ich muss zwar Manuell über
  • Export von Lyx nach LuaLatex
    Lualetex
    Makeindex
    Lualatex
Und folgendes in die so abgeleitete Tex Datei Schreiben:

Zur Erzeugung des Verzeichnisses:
\usepackage[nonewpage]{imakeidx}
% Wir taufen den Index 'tsm' und geben ihm den Titel 'Index'
\makeindex[name=tsm, title={Meine Stichworter}, columns=2]
Zum Anlegen von Index Einträgen ( Legt aber noch nicht den richtigen Text für den Eintrag an):
\makeatletter
\renewenvironment{SatzBox}[1][]{%
    % 1. Visuelle Manifestation
    \begin{mdframed}[style=satzstyle]%
    \begin{satz}[#1]%
    % 2. Kausale Verknüpfung zum Index
    % Wir prüfen, ob ein Titel (#1) übergeben wurde, um leere Index-Einträge zu vermeiden.
   % \if\relax\detokenize{#1}\relax
    %\else
        % Hier wird der Eintrag in der Anti-Struktur erzeugt
        \index[tsm]{#1 @ \textbf{Satz}: #1}%
    %\fi
}{%
    \end{satz}%
    \end{mdframed}%
}
\makeatother
Und zur Ausgabe:
\printindex[tsm]

Umwandlung von Labels in Stichworteinträge

von ComputerArtists_ThL » Fr 26. Dez 2025, 06:13

Liebes Latex Forum,
Ich habe da mal eine Saublöde und Verzwickte Frage:
Ich muss ungefähr 200 Labels in Stichworteinträge Umwandeln ( Die Labels bleiben sollen stehen bleiben nur Automatisch ins Stichwortverzeichnis eingetragen werden ).
Ich verwende LyX und habe ehrlich gesagt keinen Plan von LyX Scripting und Latex Scripting.
Ich wäre echt zu Dank verpflichtet könnte man mir auf den rechten Weg verhelfen.
Dass es eigentlich klappen müsste weis ich da ich es fast hatte.

Mit sehr viel Hoffnung auf Hilfe.

ComputerArtists_ThL

Nach oben