Latex plottet einen Teil des Indexverzeichnisses falsch

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


Blaecki1994
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 26. Dez 2019, 13:49

Latex plottet einen Teil des Indexverzeichnisses falsch

Beitrag von Blaecki1994 »

Hallo zusammen,

ich habe eine Frage bezüglich des Indexverzeichnisses. Dafür benutze ich das package "nomencl". Innerhalb dieses Verzeichnisses nutze ich 3 verschiedene Gruppen, Abkürzungen, Formelzeichen und Indizes. Es kann je nach Variable immer die Abkürzung, die Beschreibung und eine Einheit angegeben werden.

Das funktioniert auch sehr gut, außer für die Gruppe Indizes (siehe Bild). Ich habe versucht verschiedene Parameter zu ändern, jedoch ohne Erfolg. Es wird immer nur die erste Zeile falsch geplottet, danach wird es korrekt dargestellt. Kennt jemand dieses Problem und kann hier unterstützen?

Vielen Dank im Voraus und frohe Weihachten! :)

Beste Grüße
Blaecki

Anbei ein Minimalbeispiel:

Code: Alles auswählen

\documentclass[duplex,twoside,openright]{scrreprt}

\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault} 
\usepackage{fontspec}
\usepackage{pgfplots}
\usepackage{subfigure}
\setcounter{secnumdepth}{3}
\usepackage{lscape}
\usepackage{pdflscape}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{changepage}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{setspace}
\usepackage{siunitx}
\usepackage{url}
\usepackage{float}
\usepackage{ifthen}
\usepackage{calc}
\usepackage{caption}
\usepackage{tocbibind}
\usepackage{lmodern}

\setlength{\parindent}{0pt}     % kein Einrücken nach Absatz
\setlength{\parskip}{1em}       % Abstand nach Absatz

\usepackage{geometry}
\geometry{a4paper, top=30mm, bottom=35mm, inner=40mm, outer=25mm, headsep=15mm, footskip=23mm}

\usepackage{fancyhdr}
\pagestyle{fancy} 

\renewcommand{\dotfill}{\leaders\hbox to 9pt{\hss.\hss}\hfill}

%-------------Nomenclature Einstellungen-------------
\usepackage[refpage,intoc]{nomencl}
%Pagenumber in nomenclature
\renewcommand{\pagedeclaration}[1]{{\hfill #1}}
\renewcommand{\nompreamble}{\vspace{3em}}
\renewcommand{\nompostamble}{}%{\footnotesize Unless otherwise noted, metrical (SI) units are used in this document}
\newcommand{\nomunit}[1]{\hfill[\parbox{.06\textwidth}{\centering $#1$}]} %.06\textwidth ändern wenn Einheitenklammen zu schmal
\newlength{\nomentrywidth}
\setlength{\nomentrywidth}{.76\textwidth} %76

%Case with or without unit
\newcommand{\mynomenclature}[4][A]{%
    \ifthenelse{\equal{#4}{}}%
    {\nomenclature[#1]{#2}{\parbox[b]{\nomentrywidth}{#3 \dotfill.}}}%
    {\nomenclature[#1]{\parbox[t]{2.9cm}{#2\nomunit{#4}\hspace{1.5em}}}{\parbox[m]{\nomentrywidth}{#3 \dotfill.}}}%
}

%Gruppierung
%A Abkürzungen
%F Formelzeichen
%I Indizes

    \def\nomname{Symbolverzeichnis}
    \renewcommand{\nomgroup}[1]{%
        \ifthenelse{\equal{#1}{A}}{\vspace{2em}\item[]\hspace*{-\leftmargin}%
            \hfill \textbf{Abkürzungen} \hfill \hbox{}}{%
            \ifthenelse{\equal{#1}{F}}{\vspace{2em}\item[]\hspace*{-\leftmargin}%
                \hfill \textbf{Formelzeichen} \hfill
                \hbox{}}{%
                \ifthenelse{\equal{#1}{I}}{\vspace{2em}\item[]\hspace*{-\leftmargin}%
                    \hfill \textbf{Indizes} \hfill \hbox{}}}}}


%Varinfo
\newcommand{\varinfo}[4][A]{\parbox[t]{.1\textwidth}{\hfill}\parbox[t]{.2\textwidth}{#2~[$#4$]~\dotfill.}\parbox[t]{.6\textwidth}{#3}\mynomenclature[#1]{#2}{#3}{#4}\\[6pt]}
\newcommand{\varinfomod}[4][A]{\parbox[t]{.1\textwidth}{\hfill}\parbox[t]{.2\textwidth}{#2~[$#4$]~\dotfill.}\parbox[t]{.6\textwidth}{#3}\\[6pt]}

\def\deg{\ensuremath{^{\circ}}}
\newcommand{\myfrac}[2]{\displaystyle\frac{#1}{#2}}
%--------------------------------------------------------


\makeindex

\makenomenclature

\begin{document}

\printnomenclature[3cm] %number defines the width of the left entries %3

\mynomenclature[A]{Abv1}{These are all correct}{}
\mynomenclature[A]{Abv2}{These are all correct}{}

\mynomenclature[F]{Abv1}{These are all correct}{$\frac{m}{s}$}
\mynomenclature[F]{Abv2}{These are all correct}{$\frac{m}{s}$}

\mynomenclature[I]{x}{This one is incorrect}{}
\mynomenclature[I]{y}{This one is correct}{}

\end{document}
Dateianhänge
Fehlerhaftes Symbolverzeichnis
Fehlerhaftes Symbolverzeichnis
Symbolverzeichnis.png (11.98 KiB) 734 mal betrachtet

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2199
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Bild

Da ich mich mit nomencl nicht auskenne, möchte ich ein paar Off-Topic-Bemerkungen zum Besten geben:

Du verarbeitest Deinen LaTeX-Quelltext wegen des Ladens von fontspec mit Lua- oder XeLaTeX, andernfalls dürftest Du mit pdfLaTeX eine Fehlermeldung bekommen. Die Ladebefehle für inputenc und lmodern werden nicht mehr
gebraucht: Wie steige ich auf Xe/LuaLaTeX um?

subfigure ist veraltet.

pdflscape lädt lscape.

hyperref lädt url und sollte, bis auf einige Ausnahmen, als letztes Paket geladen werden.

Wenn Du float lädst, um das Gleiten von Gleitumgebungen zu unterbinden, dann könnte Dich diese Frage auf TeXwelt interessieren.

Verwende weder tocbibind noch fancyhdr mit einer KOMA-Script-Klasse.

Die Klasse kann einige Fähigkeiten des Pakets caption selber bereitstellen.

Für das Einstellen des Einzugs und des Abstands eines Absatzes bietet die Klasse den Befehl \setparsizes an. In Deinem Fall führt das zu \setparsizes{0pt}{1em}{0pt plus 1fil}.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4036
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

du hast dich in deinen \ifthenelse-Schachtelungen verlaufen. Der letzten fehlt der else-Zweig.

Ich würde ifthenelse vermeiden:




Verwende nicht lmodern, helvet und inputenc zusammen mit lualatex und xelatex.

Code: Alles auswählen

\documentclass[duplex,twoside,openright,parskip=half-]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\setmainfont{TeX Gyre Heros}


\usepackage{geometry}
\geometry{a4paper, top=30mm, bottom=35mm, inner=40mm, outer=25mm, headsep=15mm, footskip=23mm}

\usepackage{fancyhdr}
\pagestyle{fancy}

\renewcommand{\dotfill}{\leaders\hbox to 9pt{\hss.\hss}\hfill}

%-------------Nomenclature Einstellungen-------------
\usepackage[refpage,intoc]{nomencl}
%Pagenumber in nomenclature
\renewcommand{\pagedeclaration}[1]{{\hfill #1}}
\renewcommand{\nompreamble}{\vspace{3em}}
\renewcommand{\nompostamble}{}%{\footnotesize Unless otherwise noted, metrical (SI) units are used in this document}
\newcommand{\nomunit}[1]{\hfill[\parbox{.06\textwidth}{\centering $#1$}]} %.06\textwidth ändern wenn Einheitenklammen zu schmal
\newlength{\nomentrywidth}
\setlength{\nomentrywidth}{.76\textwidth} %76

%Case with or without unit
\newcommand{\mynomenclature}[4][A]{%
    \ifthenelse{\equal{#4}{}}%
    {\nomenclature[#1]{#2}{\parbox[b]{\nomentrywidth}{#3 \dotfill.}}}%
    {\nomenclature[#1]{\parbox[t]{2.9cm}{#2\nomunit{#4}\hspace{1.5em}}}{\parbox[m]{\nomentrywidth}{#3 \dotfill.}}}%
}

%Gruppierung
%A Abkürzungen
%F Formelzeichen
%I Indizes

\newcommand\nomgrouptitleA{Abkürzungen}
\newcommand\nomgrouptitleF{Formelzeichen}
\newcommand\nomgrouptitleI{Indizes}

\def\nomname{Symbolverzeichnis}

\renewcommand{\nomgroup}[1]{%
      \vspace{2em}\item[]\hspace*{-\leftmargin}%
      \hfill \textbf{\csname nomgrouptitle#1\endcsname}%
      \hfill\mbox{}%
      }

\makenomenclature

\begin{document}

\printnomenclature[3cm] %number defines the width of the left entries %3

\mynomenclature[A]{Abv1}{These are all correct}{}
\mynomenclature[A]{Abv2}{These are all correct}{}

\mynomenclature[F]{Abv1}{These are all correct}{$\frac{m}{s}$}
\mynomenclature[F]{Abv2}{These are all correct}{$\frac{m}{s}$}

\mynomenclature[I]{x}{This one is incorrect}{}
\mynomenclature[I]{y}{This one is correct}{}

\end{document}

Blaecki1994
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 26. Dez 2019, 13:49

Beitrag von Blaecki1994 »

Hallo Bartman, hallo u_fischer,

vielen Dank für eure Hinweise und Tipps!! Problem hat sich gelöst.

Antworten