PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : parskip, glossaries, und andere Ärgernisse



@ndi
21-03-2011, 21:14
Hallo alle zusammen,

ich habe mich eingehend mit LaTeX beschäftigt, und habe mir mal meine eigene Vorlage erstellt. Die ist jetzt auch eigentlich fertig, nur habe ich ein paar Dinge, an denen ich einfach kläglich scheiter.

Hier ein Auszug meiner Fragen (in der angehängten Zipdatei habe ich ein minimalbeispiel beigefügt, das die detaillierten Fragen und dazugehörigen Beispiele enthält)

- die ungleichen Abstände einiger Umgebungen
- einen glossaries style mit sublistdotted erstellen, der Seitenzahlen enthält
- eine anständige Liste der ntheorem-Umgebung


Und hier ist der Link zu meinen Problemen

http://dl.dropbox.com/u/14959061/Minimalbeispiel.zip


Wär super, wenn ihr mir weiterhelfen könnt. Ich bin dazu leider zu unfähig.

Grüße, Andi

@ndi
27-03-2011, 14:00
Hallo,

hat wirklich niemand ein paar hilfreiche Vorschläge?

Hier nochmal der minimalisierte Quelltext...


\documentclass[12pt,a4paper,twoside,BCOR=0mm,DIV=12
, parskip=half- % Absatzabstand von einer halben Zeile ohne Vorkehrungen an der letzten Zeile des vorherigen Absatzes zu treffen (duch >>-<<); >>\noindent<< automatisch aktiviert
]{scrreprt}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{calc}
\usepackage{amsmath,amssymb}
\numberwithin{equation}{section}
\usepackage[table]{xcolor}
\usepackage{calc}
\usepackage{setspace} % >>\onehalfspacing<< erst nach >>\begin{document}<<, da es sonst zu Fehlermeldungen kommt
\usepackage[linktocpage,colorlinks=true]{hyperref}
\setkomafont{captionlabel}{\normalfont\bfseries} % Fette Beschriftungen
\usepackage[all]{hypcap} % Damit die Referenz nicht auf die Caption, sondern auf das Bild zeigt, evtl noch vor Objekt >>\capstart<< benutzen

% Gleichungen ################################################## ###########

% Einzug von Gleichungen ändern
% Einrücken auf >>\tababstand<<: \fleq
% Linksbündig: \fleqn
% Zentriert: \cneq
\makeatletter
\def\fleq{\@fleqntrue \let\mathindent\@mathmargin \@mathmargin=10mm}
\def\fleqn{\@fleqntrue \let\mathindent\@mathmargin \@mathmargin=0mm}
\def\cneq{\@fleqnfalse}
%\g@addto@macro{\endsubequations}{\addtocounter{eq uation}{-1}}
\makeatother

% Listings ################################################## ##############

% Um Programmquellcodes direkt einzubinden
\usepackage{scrhack} % Damit wird die Warnung >>\float@addtolists<< beseitigt wird, da mit diesem package >>tocbasic<< unterstützt wird
\usepackage{listings}
\lstset{breaklines=true, tabsize=4, breakindent=9.47mm, basicstyle=\ttfamily\small%\it%\scriptsize%
, numberstyle=\tiny\sffamily\itshape\color{gray!70}
, emphstyle=\color{dunkelblau}
, fontadjust=false
, showstringspaces=false
}

\renewcommand*\lstlistingname{Algorithmus}
\renewcommand*\lstlistlistingname{Ausschnittverzei chnis}

\lstnewenvironment{algorithmus}[1][]
{\lstset{language=Matlab,#1, captionpos=b, numbers=left, frame=none, commentstyle=\itshape\color{gray!130},
%stringstyle=\normalfont,
keywordstyle=\bf, morekeywords={[4]}, emph={}, mathescape, numbersep=10pt, xleftmargin=10mm, xrightmargin=10mm
, backgroundcolor=\color{gray!20}
, delim=[is][\normalfont\normalsize]{!§}{!§}}}{}

\lstnewenvironment{abheben}[1][]{\lstset{#1, captionpos=b, numbers=none, frame=none, xleftmargin=10mm}}{}

% ntheorem ################################################## ##############

\usepackage{ntheorem}
\theoremstyle{plain}
\theoremheaderfont{\normalfont\bfseries}
\theorembodyfont{\itshape}
\theoremseparator{:}
\theoremindent0cm
\theoremnumbering{arabic}
\theoremsymbol{}

%\theoremstyle{definition}
\newtheorem{beispielaux}{\hspace{-10mm}Beispiel}[section]
% Aufruf mit \begin{beispielaux}[zusatz] text \end{beispielaux}
%
\newcommand{\beispiel}[2][\empty]
{
\ifthenelse{\equal{#1}{\empty}}
{\begin{beispielaux}}
{\begin{beispielaux}[#1]}
\par
\begingroup
\leftskip=10mm
#2
\par
\endgroup
\end{beispielaux}
}

% Glossar ################################################## ###############

%Darstellung des Glossars einstellen; Sollte nach >>hyperref<< geladen werden
\usepackage[ngerman]{translator} % für die Übersetzung bei Benutzung von >>ngerman<<
\usepackage[
%acronym=true,
section=chapter % oder später mit >>\setglossarysection{chapter}<<
]{glossaries}
\renewcommand*{\glsclearpage}{}% \clearpage} % Verhindert die >>cleardoublepage<< bei den Glossaren

\newglossarystyle{meinersub}{%
\glossarystyle{listdotted}%
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glstarget{##1}{##2} ##3\glspostdescription\space ##5]}% %
\setlength{\glslistdottedwidth}{.2\hsize}
}

\newglossarystyle{meinersubb}{%
\glossarystyle{altlisthypergroup} % basierent auf Stil altlisthypergroup
\renewcommand*{\glsgroupskip}{} % keine Gruppenumbrüche
\renewcommand*{\glossaryheader}{}
\renewcommand*{\glsgroupheading}[1]{}
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glstarget{##1}{##2}]}
\renewcommand{\glossarysubentryfield}[6]{%
\par\glstarget{##2}{##3}\space##4\glspostdescripti on\space ##6}%
}

% Kategorien für die Symbole erstellen
% >>description={\nopostdesc}<< bedeutet, dass die einzelnen Kategorien keine Erklärung brauchen
\newglossaryentry{abk}{name={Abkürzungen},
description={\nopostdesc}}
\newglossaryentry{grieche}{name={Griechische Buchstaben},
description={\nopostdesc}}
\newglossaryentry{roemer}{name={Römische Buchstaben},
description={\nopostdesc}}

\makeglossaries


\begin{document}\fleq
\onehalfspacing
%
\tableofcontents
\addcontentsline{toc}{chapter}{Inhaltsverzeichnis}
%
%
\chapter{Die Fragen}
%
\begin{itemize}
\item Wie kann ich die Formatierung von allen Listen
\begin{itemize}
\item figures
\item tables
\item ntheorem
\item listings
\end{itemize}
gleich Formatieren. Und warum ist die Liste meiner Beispiele so entstellt und komplett anders formatiert (es ist nichtmal von vornherein eine Überschrift dabei). Die Hyperlinks auf die Seitenzahlen fehlen dort auch.
\item Wie kann ich das Inhaltsverzeichnis in meinen Hyperrefstammbaum mit aufnehmen, ohne dass es selbst im Inhaltsverzeichnis steht
\item Wie kann ich die Abstände der \lstinline{listings}, \lstinline{ntheorems}, \lstinline{verbatim}, \lstinline{figure}, etc. alle angleichen, z.B. alle auf den der Abschnitte (\lstinline{parskip=half-})
\item Wenn man in der Päambel \lstinline{parskip=half-} aktiviert, verzieht es die Abstände noch mehr (die Verbatimummgebung bekommt oben und unten größere Abstände, die Listingumgebung nur unten). Wie kann ich das unterbinden?
\item Warum ist bei Fließobjekten wie dem Algorithmus und dem Bild der Abstand oberhalb des Objektes kleiner als der Unterhalb der Caption?
\item Wie bekomme ich mit glossaries ein Verzeichnis hin, das dem des \lstinline{sublistdotted} entspricht, jedoch auch einen Hyperlink der Seitenzahlen enthält.
\end{itemize}
%
\chapter{Das Problem mit den Abständen}
%
\section{Gleichungen}
%
\blindtext
\begin{alignat}{3}
&\nabla\sigma\nabla u &&= 0 &&\text{in $\Omega$} \\
&\sigma\frac{\partial u}{\partial\nu} &&= f \quad &&\text{auf $\Gamma$}
\end{alignat}
\blindtext
%
%
\section{Verbatim- und Listingumgebung}
%
Verbatimumgebung\\
\blindtext
\begin{verbatim}
\befehl
\end{verbatim}
Listingumgebung\\
\blindtext
\begin{abheben}
\lstlistoflistings
\end{abheben}
\blindtext
Ein Listing mit Caption
\begin{algorithmus}[caption=Meine eigene Algorithmus-Umgebung,label=meinalg]
for i = 1:10
i = i+1; % Kommentar
$\alpha$ = atan(i)
Erbebnis = sin(i);
!§Einfach mal so n normalen Text rein!§
end
$i_2=i_3$;
\end{algorithmus}
Ein weiterer Text.
%
%
\section{Bilder}
%
\blindtext
%
\begin{figure}[htp]
\centering
\fbox{\parbox[c][3cm][c]{0.8\textwidth}{Ein tolles Bild}}
\caption{Bild}
\end{figure}
%
\blindtext
%
%
\section{ntheoremumgebung}
%
\blindtext
%
\beispiel[Zusatz]{\blindtext}
%
Es geht weiter
%
\beispiel[Zusatz 2]{\blindtext}
%
\section{Abschnitte}
%
\blindtext

\blindtext
%
\chapter{Die Glossarieumgebung}
%
Um Glossaryumgebung zu nutzen, muss man an makeindex noch weitere Argumente übergeben. Beim \emph{TeXniCCenter} fügt man dafür unter \emph{Ausgabepofile - Nachbearbeitung} bei der \emph{Anwendung}
\begin{abheben}
makeindex.exe
\end{abheben}
und bei \emph{Argumente}
\begin{abheben}
-s "%tm.ist" -t "%tm.glg" -o "%tm.gls" "%tm.glo"
\end{abheben}
hinzu.\\
\newacronym[description={Finite-Elemente-Methode, ein Verfahren zur näherungsweisen Lösung von physikalischen Problemen (englisch: FEA)}, parent=abk]
{fem}{FEM}{Finite-Elemente-Methode}
\newglossaryentry{alphai}{name=$\alpha_i$, description=Vektor der Winkelbeschleunigung, sort=alphai, parent=grieche}
\newglossaryentry{cl}{name=$Cl$, description=Der Ortsvektor zu C, sort=Cl, parent=roemer}
\newglossaryentry{bb}{name=Bb, description=Der Ortsvektor zu B, sort=Bb, parent=roemer}
\newglossaryentry{ab}{name=$a$, description=Eine Variable, sort=ab, parent=roemer}
\newglossaryentry{al}{name=$Al$, description=Der Ortsvektor zu A, sort=Al, parent=roemer}
\gls{fem}, \gls{fem}, \glsfirst{fem}, \gls{alphai}, \gls{cl}, \gls{bb}, \gls{ab}, \gls{al}
%
%
% Verzeichnisse einbinden #################################################
%
\renewcommand{\glossarypreamble}{Ein paar erkärende Worte}
\renewcommand{\glossarypostamble}{Noch eine kleine Randnotiz}
%\glstoctrue % ins Inhaltsverzeichnis
\glssetwidest[1]{Abstand} % \glssetwidest[>level<]{>Text<}
\printglossary[title=Symbole und Abkürzungen,
style=meinersub] % sublistdotted, tree, alttree mit \glssetwidest[>level<]{>Text<}
\addcontentsline{toc}{chapter}{Symbole und Abkürzungen}
%
\listoffigures
\addcontentsline{toc}{chapter}{Abbildungsverzeichn is}
%
\chapter*{Beispielverzeichnis}
%\theoremlisttype{optname}
\listtheorems{beispielaux}
\addcontentsline{toc}{chapter}{Beispielverzeichnis }
%
\lstlistoflistings
\addcontentsline{toc}{chapter}{\lstlistlistingname }
%
\end{document}




Wär echt super, wenn Ihr mir helfen könntet,

Gruß, Andi

tral
27-03-2011, 16:11
Hallo,

hat wirklich niemand ein paar hilfreiche Vorschläge?

Hier nochmal der minimalisierte Quelltext...


Ich glaube, wir haben verschiedene Ansichten, was "minimalisiert" heißt. Vielleicht hilft das ja: http://www.minimalbeispiel.de/

Christian.

@ndi
28-03-2011, 19:49
Hey Christian,

danke für deine Rückmeldung.
Mein >>Minimalbeispiel<< ist deshalb so groß, weil gleich mehrere Fragen drinstecken.

Ich bin mittlerweile draufgekommen, dass das mit der Liste der ntheorems nicht funktioniert, weil ich das hyperrefpackage geladen habe. Ich möchte allerdings auf das Luxuspaket nicht verzichten. Gibt es dafür irgendein Trick?


Hier mal der Miniquellcode. Einfach mal das hyperrefpackage auskommentieren, dann sieht die Liste der Theoreme wieder super aus.



\documentclass{scrreprt}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{ntheorem}
\newtheorem{Thm}{Theorem}

% DER ÜBELTÄTER ################################################## ################
\usepackage[linktocpage,colorlinks=true]{hyperref}
% DER ÜBELTÄTER ################################################## ################

\begin{document}
%
\tableofcontents
%
\blinddocument
%
\begin{figure}
Ein Bild.
\caption{Ein Bild}
\end{figure}
\blindtext
\begin{Thm}[Name 1]
Ein Theorem.
\end{Thm}
\blindtext
\begin{Thm}[Name 2]
Ein Theorem.
\end{Thm}
%
\chapter{List of Theorems}
\makeatletter
\let\org@dottedtocline\@dottedtocline
\begingroup
\renewcommand*\@dottedtocline[3]{\org@dottedtocline{#1}{1.5em}{#3}}
\listtheorems{Thm}
\endgroup
\makeatother
%
\listoffigures
%
\end{document}

rais
28-03-2011, 21:18
Moin moin,


Ich bin mittlerweile draufgekommen, dass das mit der Liste der ntheorems nicht funktioniert, weil ich das hyperrefpackage geladen habe. Ich möchte allerdings auf das Luxuspaket nicht verzichten. Gibt es dafür irgendein Trick?

manchmal hilft es, in der Doku zu einem Paket (hier ntheorem) nach dem Namen des `problematischen' Pakets (hier hyperref) zu suchen.


\documentclass{scrreprt}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage[hyperref]{ntheorem}
\newtheorem{Thm}{Theorem}

\usepackage[linktocpage,colorlinks=true]{hyperref}

\begin{document}
%
\tableofcontents
%
\blinddocument
%
\begin{figure}
Ein Bild.
\caption{Ein Bild}
\end{figure}
\blindtext
\begin{Thm}[Name 1]
Ein Theorem.
\end{Thm}
\blindtext
\begin{Thm}[Name 2]
Ein Theorem.
\end{Thm}
%
\chapter{List of Theorems}
\listtheorems{Thm}
\listoffigures
%
\end{document}

MfG

@ndi
28-03-2011, 23:04
Hey Rainer,

vielen dank für die Hilfe. Hat wunderbar geklappt.

Ich habe jedoch noch 2 weitere Fragen.
Ist es irgendwie möglich, das Inhaltsverzeichnis im Hyperrefbaum der pdf zu haben, jedoch nicht im wahren Inhaltsverzeichnis der pdf (hier auf Seite 1)?
Eine etwas gekorkste Lösung ist, das Inhaltsverzeichnis einfach aus der *.aux Datei zu löschen und ein weiteres Mal zu komplilieren. Das müsste man jedoch jedes mal von vorn machen.

Mein 2tes Anliegen ist ein geeigneter Stil für das glossaries package.
Ich habe mir 2 verschieden angepasst, jedoch gibt nur der Stil >>meinersub<< ein gescheites Format.
Der Stil >>meinersubb<< enthält jedoch die Seitenzahlen, die ich beim ersteren einfach nicht integriert bekomme.

Hat mir da jmd einen Lösungsvorschlag? Hier der code:




\documentclass[12pt,a4paper,twoside]{scrreprt}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[linktocpage,colorlinks=true]{hyperref}
\usepackage[all]{hypcap} % Damit die Referenz nicht auf die Caption, sondern auf das Bild zeigt, evtl noch vor Objekt >>\capstart<< benutzen

% Glossar ################################################## ###############

\usepackage[ngerman]{translator} % für die Übersetzung bei Benutzung von >>ngerman<<
\usepackage{glossaries}
\renewcommand*{\glsclearpage}{}% \clearpage} % Verhindert die >>cleardoublepage<< bei den Glossaren


% Meine Stile, die jedoch nicht richtig passen _____________________________

\newglossarystyle{meinersub}{%
\glossarystyle{listdotted}%
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glstarget{##1}{##2} ##3\glspostdescription\space ##5]}% %
\setlength{\glslistdottedwidth}{.2\hsize}
}

\newglossarystyle{meinersubb}{%
\glossarystyle{altlisthypergroup} % basierent auf Stil altlisthypergroup
\renewcommand*{\glsgroupskip}{} % keine Gruppenumbrüche
\renewcommand*{\glossaryheader}{}
\renewcommand*{\glsgroupheading}[1]{}
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glstarget{##1}{##2}]}
\renewcommand{\glossarysubentryfield}[6]{%
\par\glstarget{##2}{##3}\space##4\glspostdescripti on\space ##6}%
}

% Kategorien für die Symbole erstellen ______________________________________
% >>description={\nopostdesc}<< bedeutet, dass die einzelnen Kategorien keine Erklärung brauchen
\newglossaryentry{abk}{name={Abkürzungen},
description={\nopostdesc}}
\newglossaryentry{grieche}{name={Griechische Buchstaben},
description={\nopostdesc}}
\newglossaryentry{roemer}{name={Römische Buchstaben},
description={\nopostdesc}}

\makeglossaries

% ################################################## #######################
\begin{document}
% ################################################## #######################
%
\tableofcontents
\addcontentsline{toc}{chapter}{Inhaltsverzeichnis}
%
\chapter{Die Glossarieumgebung}
%
Um Glossaryumgebung zu nutzen, muss man an makeindex noch weitere Argumente übergeben. Beim \emph{TeXniCCenter} fügt man dafür unter \emph{Ausgabepofile - Nachbearbeitung} bei der \emph{Anwendung}
\begin{verbatim}
makeindex.exe
\end{verbatim}
und bei \emph{Argumente}
\begin{verbatim}
-s "%tm.ist" -t "%tm.glg" -o "%tm.gls" "%tm.glo"
\end{verbatim}
hinzu.\\
\newacronym[description={Finite-Elemente-Methode, ein Verfahren zur näherungsweisen Lösung von physikalischen Problemen (englisch: FEA)}, parent=abk]
{fem}{FEM}{Finite-Elemente-Methode}
\newglossaryentry{alphai}{name=$\alpha_i$, description=Vektor der Winkelbeschleunigung, sort=alphai, parent=grieche}
\newglossaryentry{cl}{name=$Cl$, description=Der Ortsvektor zu C, sort=Cl, parent=roemer}
\newglossaryentry{bb}{name=Bb, description=Der Ortsvektor zu B, sort=Bb, parent=roemer}
\newglossaryentry{ab}{name=$a$, description=Eine Variable, sort=ab, parent=roemer}
\newglossaryentry{al}{name=$Al$, description=Der Ortsvektor zu A, sort=Al, parent=roemer}
\gls{fem}, \gls{fem}, \glsfirst{fem}, \gls{alphai}, \gls{cl}, \gls{bb}, \gls{ab}, \gls{al}
%
%
% Verzeichnisse einbinden #################################################
%
\renewcommand{\glossarypreamble}{Ein paar erkärende Worte}
\renewcommand{\glossarypostamble}{Noch eine kleine Randnotiz}
%\glstoctrue % ins Inhaltsverzeichnis
\glssetwidest[1]{Abstand} % \glssetwidest[>level<]{>Text<}
\printglossary[title=Symbole und Abkürzungen,
style=meinersub] % sublistdotted, tree, alttree mit \glssetwidest[>level<]{>Text<}
\addcontentsline{toc}{chapter}{Symbole und Abkürzungen}
%
\renewcommand{\glossarypreamble}{Ein paar erkärende Worte}
\renewcommand{\glossarypostamble}{Noch eine kleine Randnotiz}
%\glstoctrue % ins Inhaltsverzeichnis
\glssetwidest[1]{Abstand} % \glssetwidest[>level<]{>Text<}
\printglossary[title=Symbole und Abkürzungen Version 2,
style=meinersubb] % sublistdotted, tree, alttree mit \glssetwidest[>level<]{>Text<}
\addcontentsline{toc}{chapter}{Symbole und Abkürzungen Version 2}
\end{document}



Beste Grüße, und schon mal vielen Dank,

Andi

Xenara
29-03-2011, 07:49
Bei der zweiten Frage kann ich dir leider nicht helfen, aber bei der ersten: Was du einfügen willst, ist ein sogenanntes pdfbookmark (siehe hyperref-Doku).


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{blindtext}

\usepackage{hyperref}

\begin{document}

\pdfbookmark[0]{Inhaltsverzeichnis}{toc}
\tableofcontents

\blinddocument

\end{document}

@ndi
29-03-2011, 12:52
Hey Xenara,
danke dir, hat geklappt...

Ich hab jetzt auch ne Lösung für mein 2tes Problem gefunden



\newcommand{\breite}[2]{
\newlength{#1}
\settowidth{#1}{#2}
}

\breite{\leertaste}{\space}

\newglossarystyle{meinerb}{ % entspricht dem abgeänderten listdotted
\glossarystyle{list}
\renewcommand*{\glossaryentryfield}[5]{
\item[\hspace{-2\leertaste}\hspace{1.5em}]
\makebox[\glslistdottedwidth][l]{\glstarget{##1}{##2}
\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3\space ##5} % hier ist ##5 die Seitenzahl
}

\newglossarystyle{meinersub}{ % entspricht dem abgeänderten listdotted
\glossarystyle{list}
\renewcommand*{\glossaryentryfield}[5]{
\item[\glstarget{##1}{##2} ##3\glspostdescription\space ##5]}
%\item[]\makebox[\glslistdottedwidth][l]{\glstarget{##1}{##2}
%\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}
\renewcommand*{\glossarysubentryfield}[6]{
\item[\hspace{-2\leertaste}\hspace{1.5em}]
\makebox[\glslistdottedwidth][l]{\glstarget{##2}{##3}
\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##4\space ##6} % hier ist ##6 die Seitenzahl
%
%\renewcommand*{\glsgroupskip}{} % keine Gruppenumbrüche
%\renewcommand*{\glossaryheader}{}
%\renewcommand*{\glsgroupheading}[1]{}
}