Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Tiefe des Listing-Verzeichnisses anpassen

  1. #1
    Registrierter Benutzer
    Registriert seit
    10.04.2012
    Beiträge
    3

    Tiefe des Listing-Verzeichnisses anpassen

    Hallo zusammen,
    ich habe folgendes Problem:
    Meine Studienarbeit bestand aus Programmieren und bei meiner Dokumentation habe ich jede Menge Quellcodeausschnitte im Anhang. Um das ein bisschen übersichtlicher zu gestalten, habe ich die Quellcodeauszüge im Anhang in "sections" aufgeteilt, die die Klassennamen haben. Der Quellcodeausschnitt ist dann eine "subsection". Leider wird dies aber beim Erstellen des Listingsverzeichnisses nicht berücksichtigt. D.h. der erste Quellcodeausschnitt ist in der "subsection" A.1.1. Klasse::Methode() wird im Listingsverzeichnis aber als A.1 Klasse::Methode angezeigt und auch in der "caption" so dargestellt. Ich hätte aber gerne A.1.1 Klasse::Methode(). Kann mir jemand sagen, wie ich die Tiefe der Nummerierung wie es beim Inhaltsverzeichnis (tocdepth), anpassen kann?
    Falls die Beschreibung unklar war, ist hier ein Beispiel:
    Code:
    \documentclass[12pt, a4paper, oneside]{scrreprt}
    %**************************************************
    % Verwendete Packages; Dokumenteinstellungen
    %**************************************************
    \usepackage{fancyhdr}
    \usepackage{graphics}
    \usepackage{german}
    \usepackage[latin1]{inputenc}
    \usepackage{color}
    \newcommand{\KopfzeileFarbe}{\color[gray]{0.6}}%
    \usepackage[linkcolor=black, % einfache interne Verknüpfungen
    anchorcolor=black,% Ankertext
    citecolor=black, % Verweise auf Literaturverzeichniseinträge im Text
    filecolor=black, % Verknüpfungen, die lokale Dateien öffnen
    menucolor=black, % Acrobat-Menüpunkte
    urlcolor=black]{hyperref}
    \usepackage{caption}
    \usepackage[scaled=0.95]{helvet}
    \usepackage[T1]{fontenc}
    \newcommand{\changefont}[3]{\fontfamily{#1} \fontseries{#2} \fontshape{#3} \selectfont}
    \usepackage{amsmath}
    \usepackage{mathtools}
    \usepackage{multirow}
    \usepackage{colortbl}
    \usepackage[math]{helvet}
    \usepackage{tocloft}
    \usepackage{listings}
    \definecolor{darkgreen}{rgb}{0,0.35,0}
    \lstset{
    	numbers=left,
    	basicstyle=\footnotesize,
    	captionpos=b,
    	language=C++,
    	tabsize=2,                      % sets default tabsize to 2 spaces
    	numberstyle=\tiny\color[gray]{0.6},   % line number style
      keywordstyle=\color{blue},          	% keyword style
      commentstyle=\color{darkgreen},       % comment style
      showspaces=false,               % show spaces adding particular underscores
      showstringspaces=false,        	% underline spaces within strings
      stringstyle=\color{magenta},         % string literal style
      numberbychapter=true
    }
    \renewcommand*\lstlistingname{Quellcode}
    \renewcommand{\lstlistlistingname}{Quellcodeverzeichnis}
    
    \newcommand{\settocdepth}[1]{%
     \addtocontents{toc}{\protect\setcounter{tocdepth}{#1}}}
    
    %**************************************************
    %Beginn Doukment
    %**************************************************
    \begin{document}
    \renewcommand{\figurename}{Abbildung}
    \changefont{phv}{m}{n}
    \begin{titlepage}
    \begin{center}
    {\huge {\bf Studienarbeit}\\}
    {\vspace{2,5cm} \large \bf von\\mir\\}
    {\vspace{2,5cm} \huge \bf Titel der Arbeit\\}
    {\vspace{2,5cm} \large \bf Institut für \\Universität \\}
    \vspace{2,5cm} \large \bf Betreut von\\Dipl.-Ing. 
    \end{center}
    \end{titlepage}
    \pagenumbering{roman}
    \pagestyle{fancy}
    \renewcommand*{\chapterpagestyle}{fancy}
    \addcontentsline{toc}{chapter}{Inhaltsverzeichnis}
    \tableofcontents
    \setcounter{tocdepth}{4}
    \setcounter{secnumdepth}{3}
    \newpage
    \lstlistoflistings
    \addcontentsline{toc}{chapter}{Quellcodeverzeichnis}
    \pagenumbering{arabic}
    \chapter{Kapitel}
    ...Text...
    \section{Section}
    ...Text...
    \subsection{Subsection}
    ...Text...
    \appendix
    \settocdepth{1}
    \chapter{Auszüge aus dem Quellcode}
    \section{Quellcodeausschnitt1.cpp}
    \subsection{Die Methode {\tt void Klasse::Methode()}}
    \label{hauptmaskeSourcecode1}
    \lstset{caption = Die Methode {\tt void Klasse::Methode()}}
    \begin{lstlisting}
    void Klasse::Methode()
    {
    		...
    	QString file;
    	file = QFileDialog::getSaveFileName ( this, "Saving",
    		QDir::currentPath(), "Sessiondata (*.save)") ;
    	QFile filesave(file);
    		...
    	QDataStream save(&filesave);
    	if (!filesave.open(QIODevice::WriteOnly)){
    		QString caption("Error");
    		QString text("Saving error");
    		QMessageBox::warning(this, caption, text, 
    			QMessageBox::Ok);
    		return;
    	}
    	return;
    }
    \end{lstlisting}
    \end{document}

  2. #2
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Dein Code macht genau, was er soll. Schließlich setzt du mit settocdepth doch die Tiefe der Verzeichniseinträge wieder kurz vor dem Listing herunter. Du solltest auch prüfen, ob das mehrmaligen Umdefinieren des Parameters sinnvoll ist.

    Hier besteht auch anderen Stellen noch Aufräumbedarf. Du lädst zweimal helvet, was zumind. auf meinem System zu einem option clash führt. Weiterhin solltest du low-level-Befehle wie bf und tt vermeiden und stattdessen die entsprechenden LaTeX-Umschalter bfseries und ttfamily verwenden.

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Listings werden normalerweise Kapitelweise durchgezählt und zeigen die Nummer "Kapitel.Listingsnummer". Wenn du statt dessen die \subsection-Nummer sehen willst, mache

    Code:
    \appendix
    \renewcommand{\thelstlisting}{\thesubsection.}

  4. #4
    Registrierter Benutzer
    Registriert seit
    10.04.2012
    Beiträge
    3
    Vielen Dank, Ulrike! Wie einfach es manchmal ist...
    Du bist jetzt schon meine Heldin, aber wenn du mir noch sagst, wie ich jetzt wieder eine Lücke zwischen die Nummerierung und die Überschrift bekomme, kann ich mich nicht mehr halten!
    Zusätzlich würde ich gerne den linken Einzug verkleinern, da er größer ist, als beim Inhalts- und Abbildungsverzeichnis.
    Danke für deine Hilfe!!!

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Der Einzug ist genauso groß wie der Einzug von \section-Einträgen im Inhaltsverzeichnis. Manipulieren kannst du die Werte, indem du \l@lstlisting umdefiniert. Du wirst übrigens bei \thelstlisting den Punkt wegnehmen müssen, er ist sonst im Listingsverzeichnis doppelt (das Autodot-Verfahren von scrreprt fällt hier aus). Wenn du ihn in der \caption brauchst, kannst du wahrscheinlich das Captionformat mit dem caption-Paket ändern.

    Code:
    \documentclass[12pt, a4paper, oneside]{scrreprt}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{helvet}
    
    \usepackage{listings}
    \makeatletter
    \renewcommand\l@lstlisting{\@dottedtocline{1}{0pt}{3em}}
    \makeatother
    \begin{document}
    \tableofcontents
    \lstlistoflistings
    \appendix
    \chapter{Auszüge aus dem Quellcode}
    \section{Quellcodeausschnitt1.cpp}
    \subsection{Die Methode {\tt void Klasse::Methode()}}
    \renewcommand{\thelstlisting}{\thesubsection}
    \begin{lstlisting}[caption = Die Methode {\tt void Klasse::Methode()}]
    void Klasse::Methode()
    \end{lstlisting}
    \end{document}

  6. #6
    Registrierter Benutzer
    Registriert seit
    10.04.2012
    Beiträge
    3
    Super! Vielen herzlichen Dank!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •