nomencl - Sortierreihenfolge

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: nomencl - Sortierreihenfolge

von tobi75 » Di 9. Apr 2013, 22:36

hab mich da etwas kompliziert ausgedrückt. Nein, es ist alles gut und funktioniert super.
Also, herzlichen Dank noch einmal für Deine Hilfe! :-)

von rais » So 7. Apr 2013, 20:01

tobi75 hat geschrieben:Wenn ich den optionalen Parameter nicht vorbelegen würde, also sinngemäß: der erste Parameter ist optional und wenn er nicht angegeben ist, dann nimm gar nicht, würde man dann schreiben
\newcommand*\nomindexed[4][ ]{...}
oder geht sowas gar nicht?
prinzipiell ginge das schon. Allerdings wäre hier dann bei \nomindexed{m}{x}{X} dieser Eintrag unter Gruppe `M' anzuordnen.
tobi75 hat geschrieben:
rais hat geschrieben:
tobi75 hat geschrieben: und was der Ausdruck [#1#2_#3] bewirkt.
bei
\newcommand*\nomindexed[4][c]{%
  \nomenclature[#1#2_#3]{$#2_{#3}$}{#4}%
}
und
\nomindexed{m}{A}{Test 1}
wird daraus `cm_A' (#1=c, #2=m, #3=A) und als optionales Argument an \nomenclature -- zur Sortierung -- übergeben.
MfG
woher weiß denn \nomenclature, dass es den Parameter [cm_A] zur Sortierung verwenden soll und nicht irgendwas anderes damit macht?
Was sollte \nomenclature damit anderes machen?
Der optionale Parameter beim \nomenclature-Aufruf ist für die Sortierung gedacht, was Du ja bereits selbst zur Unterscheidung `welcher Eintrag geht in welche Subkategorie' verwendest.
tobi75 hat geschrieben:
Im übrigen, muss ich in meiner Nomenklatur alle Einträge mit diesem umdefinierten Befehl erfassen, da ansonsten alle mit \nomenclature eingetragenen Werte vor den \nomindexed Einträgen kommen.
Das versteh ich nicht ganz. Wenn ich z. B. aus
\nomenclature[C]{C2}{TEST A1}
sowas wie
\nomenclature[C]{T2}{TEST A1}
mache, steht dieser Eintrag auch südlich eines etwaigen \nomindexed{m}{x}{X}
tobi75 hat geschrieben: Das geht aber Problemlos indem ich aus
\nomindexed{c}{m}{A}{Test 1} 
einfach
\nomindexed{c}{m}{}{Test 1} 
mache
Dann werden auch die Einträge ohne Index an der richtigen Stelle einsortiert.
Hmm. Vllt schaffst Du es ohne Klimmzüge mit
\newcommand*\nomindexed[4][c]{%
\nomenclature[#1$#2_#3$]{$#2_{#3}$}{#4}%
}
Wenn nicht, poste bitte ein Minimalbeispiel, das Deinen aktuellen Stand darstellt.

MfG
Rainer

von tobi75 » Di 2. Apr 2013, 07:50

rais hat geschrieben:
\newcommand*\nomindexed[4][c]{...}
heißt in etwa ``Definiere einen neuen Befehl `\nomindexed'. Dieser soll vier ([4]) Parameter bekommen können, von denen der erste optinal ist (die zweite eckige Klammer). Wenn dieser optionale Parameter nicht angegeben wird, nimm `c' dafür an (den Inhalt der zweiten eckigen Klammer).''
Innerhalb {...} stehen dann #1--#4 als Platzhalter für die entsprechenden Parameter zur Verfügung.
gut, kapiert. Wenn ich den optionalen Parameter nicht vorbelegen würde, also sinngemäß: der erste Parameter ist optional und wenn er nicht angegeben ist, dann nimm gar nicht, würde man dann schreiben
\newcommand*\nomindexed[4][ ]{...}
oder geht sowas gar nicht?
rais hat geschrieben:
tobi75 hat geschrieben: und was der Ausdruck [#1#2_#3] bewirkt.
bei
\newcommand*\nomindexed[4][c]{%
  \nomenclature[#1#2_#3]{$#2_{#3}$}{#4}%
}
und
\nomindexed{m}{A}{Test 1}
wird daraus `cm_A' (#1=c, #2=m, #3=A) und als optionales Argument an \nomenclature -- zur Sortierung -- übergeben.
MfG
woher weiß denn \nomenclature, dass es den Parameter [cm_A] zur Sortierung verwenden soll und nicht irgendwas anderes damit macht? Es muss ja aus der Information cm_A übersetzen: lege diesen Eintrag im Abschnitt c ab. Sortiere zuerst nach m und dann nach A, wobei fehlende Zeichen bzw. kürzere Zeichenketten von A nach oben zu packen sind.

Im übrigen, muss ich in meiner Nomenklatur alle Einträge mit diesem umdefinierten Befehl erfassen, da ansonsten alle mit \nomenclature eingetragenen Werte vor den \nomindexed Einträgen kommen. Das geht aber Problemlos indem ich aus
\nomindexed{c}{m}{A}{Test 1} 
einfach
\nomindexed{c}{m}{}{Test 1} 
mache
Dann werden auch die Einträge ohne Index an der richtigen Stelle einsortiert.

von rais » Di 2. Apr 2013, 01:04

tobi75 hat geschrieben:genau so funktioniert es, auch wenn ich noch nicht verstanden habe, was genau das c in den eckigen Klammern macht
\newcommand*\nomindexed[4][c]{...}
heißt in etwa ``Definiere einen neuen Befehl `\nomindexed'. Dieser soll vier ([4]) Parameter bekommen können, von denen der erste optinal ist (die zweite eckige Klammer). Wenn dieser optionale Parameter nicht angegeben wird, nimm `c' dafür an (den Inhalt der zweiten eckigen Klammer).''
Innerhalb {...} stehen dann #1--#4 als Platzhalter für die entsprechenden Parameter zur Verfügung.
Im Aufruf wären dann
\nomindexed{A}{B}{C}
und
\nomindexed[c]{A}{B}{C}
äquivalent.
tobi75 hat geschrieben: (wenn ich den Term weglasse funktioniert es nicht mehr)
Innerhalb der Definition?
Nun, wenn Du da das [c] weglässt, erwartet \nomindexed, vier Parameter zu bekommen, d. h. Du müsstest dann aus
\nomindexed{m}{A}{Test 1}
etwa
\nomindexed{c}{m}{A}{Test 1}
machen.
tobi75 hat geschrieben: und was der Ausdruck [#1#2_#3] bewirkt.
bei
\newcommand*\nomindexed[4][c]{%
  \nomenclature[#1#2_#3]{$#2_{#3}$}{#4}%
}
und
\nomindexed{m}{A}{Test 1}
wird daraus `cm_A' (#1=c, #2=m, #3=A) und als optionales Argument an \nomenclature -- zur Sortierung -- übergeben.

MfG

von tobi75 » Mo 1. Apr 2013, 18:01

genau so funktioniert es, auch wenn ich noch nicht verstanden habe, was genau das c in den eckigen Klammern macht (wenn ich den Term weglasse funktioniert es nicht mehr) und was der Ausdruck [#1#2_#3] bewirkt.

Herzlichen Dank und schöne restliche Ostern...

von rais » Mo 1. Apr 2013, 16:52

Hallo,
tobi75 hat geschrieben: Das Kommando von oben, fügt die \nomindexed Einträge immer unter dem ersten Abschnitt ein. Gibt es hier auch eine Möglichkeit die unter Abschnitt [C], also kleine lateinische Buchstaben zuzuordnen?
ändere die \nomindexed-Definition zu so etwas wie
\newcommand*\nomindexed[4][c]{%
\nomenclature[#1#2_#3]{$#2_{#3}$}{#4}%
}
dann werden die Einträge generell unter C abgelegt. Wenn's denn doch mal woanders hin soll, kannst Du nu einen optionalen Parameter mit angeben, z. B.
\nomindexed[b]{m}{A,b,c}{Test 3}
PS) Der Rückfragestatus ist dafür gedacht, wenn eine Frage an den Threadersteller gestellt wird.

MfG
Rainer

von tobi75 » Mo 1. Apr 2013, 14:42

Hallo Rainer,
ich habe das mal in mein Hauptdokument eingefügt. Bei dem Minimalbeispiel oben, hatte ich etwas vereinfacht. In echt, nutze ich einige UNterabschnitte für die nomenclatur, also für Allgemeines, kleine und große lateinische bzw. griechische Buchstaben. Ich habe das Beispiel mal etwas erweitert.


Das Kommando von oben, fügt die \nomindexed Einträge immer unter dem ersten Abschnitt ein. Gibt es hier auch eine Möglichkeit die unter Abschnitt [C], also kleine lateinische Buchstaben zuzuordnen?

Danke und viele Grüße
\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel} % Sprache
\usepackage{ifthen}
\usepackage{nomencl}

%Überschriften wie subsection
\makeatletter
\newcommand{\subsectionlike}[1]{{\usekomafont{sectioning}\size@subsection#1}}
\makeatother

%Layout Nomenclatur anpassen
\makenomenclature
\renewcommand{\nomname}{Abkürzungsverzeichnis}
\setlength{\nomlabelwidth}{.15\hsize}
\renewcommand{\nomlabel}[1]{#1 }
\setlength{\nomitemsep}{-1.25\parsep}


%Abschnitte der Nomenclatur definieren
\renewcommand{\nomgroup}[1]{
\renewcommand{\makelabel}[1][]{##1}
\item[~]
\ifthenelse{\equal{#1}{A}}{%
\item[\textbf{\subsectionlike Allgemeine Abkürzungen}]}{%
\ifthenelse{\equal{#1}{B}}{%
\item[\textbf{\subsectionlike Lateinische Großbuchstaben als Formelzeichen}]}{%
\ifthenelse{\equal{#1}{C}}{%
\item[\textbf{\subsectionlike Lateinische Kleinbuchstaben als Formelzeichen}]}{%
\ifthenelse{\equal{#1}{D}}{%
\item[\textbf{\subsectionlike Griechische Großbuchstaben}]}{%
\ifthenelse{\equal{#1}{E}}{%
\item[\textbf{\subsectionlike Griechische Kleinbuchstaben}]}{%
}}}}}%
\item[~]
\let\makelabel\nomlabel
}

%Sortierreihenfolge für indizierte Einträge
\newcommand*\nomindexed[3]{%
\nomenclature[a#1_#2]{$#1_{#2}$}{#3}%
}



\begin{document}
a%
\nomenclature[A]{A1}{TEST A1}
\nomenclature[A]{A2}{TEST A1}

\nomenclature[B]{B1}{TEST B1}
\nomenclature[B]{B2}{TEST B1}

\nomenclature[C]{C1}{TEST C1}
\nomenclature[C]{C2}{TEST A1}

\nomenclature[D]{D1}{TEST D1}
\nomenclature[D]{D2}{TEST D1}

\nomenclature[E]{E1}{TEST E1}
\nomenclature[E]{E2}{TEST E1}


\nomindexed{m}{A}{Test 1}
\nomindexed{m}{A,b}{Test 2}
\nomindexed{m}{A,b,c}{Test 3}


\printnomenclature
\end{document}

von tobi75 » So 31. Mär 2013, 18:52

Hallo Rainer,

danke für den Vorschlag. So funktioniert das erst mal. Mal schaun, ob es im richtigen Dokument auch das gewünschte Ergebnis bringt.

Danke und schöne Ostern ;-)

Re: nomencl - Sortierreihenfolge

von rais » So 31. Mär 2013, 15:14

Hallo,
tobi75 hat geschrieben:Es gibt allerdings auch Formelzeichen, die aus mehreren Indizes bestehen. Ich habe mal das Beispiel angefügt. Von der Logik her ist es so, dass es vom allgemenen Wert $m_A$ zum konkreten Wert $m_{A,b,c}$ geht. Das Paket nomencl sortiert jetzt blöderweise genau andersrum. Kann ich irgendwie erreichen, dass der kürzere String über dem längeren erscheint?
dummerweise wird so der Klammerausdruck Bestandteil des Sortierstrings -- und eine schließende, geschweifte Klammer (}) ist für makeindex weiter hinten anzusiedeln, als ein Komma. Versuch es so
\documentclass{scrbook}
\usepackage{nomencl}
\makenomenclature
\newcommand*\nommindexed[3]{%
  \nomenclature[a#1_#2]{$#1_{#2}$}{#3}%
}
\begin{document}
a%
\nommindexed{m}{A}{Test 1}
\nommindexed{m}{A,b}{Test 2}
\nommindexed{m}{A,b,c}{Test 3}
\printnomenclature
\end{document}
Frohe Ostern!
Rainer

nomencl - Sortierreihenfolge

von tobi75 » So 31. Mär 2013, 13:16

Guten Morgen liebe community,

ich habe ein Sortierproblem mit nomencl. Ich möchte für meine Arbeit ein Abkürzungs- und Formelverzeichnis erstellt, in dem ich die verwendendeten Symbole ausge. Das funktioniert auch ganz gut. Es gibt allerdings auch Formelzeichen, die aus mehreren Indizes bestehen. Ich habe mal das Beispiel angefügt. Von der Logik her ist es so, dass es vom allgemenen Wert $m_A$ zum konkreten Wert $m_{A,b,c}$ geht. Das Paket nomencl sortiert jetzt blöderweise genau andersrum. Kann ich irgendwie erreichen, dass der kürzere String über dem längeren erscheint?


\documentclass{scrbook}
\usepackage{nomencl}
\makenomenclature

\begin{document}
\nomenclature{$m_{A}$}{Test 1}
\nomenclature{$m_{A,b}$}{Test 2}
\nomenclature{$m_{A,b,c}$}{Test 3}
\printnomenclature
\end{document}

Nach oben