PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listings mit lstinputlisting und linerange - korrekte Zeilennummer



Xeri
10-03-2014, 12:08
Hallo liebes Forum!

Für meine Master Thesis verwende ich das Packege listings.

Bisher funktioniert alles super, doch hab ich jetzt das Problem, dass ich gerne mit linerange arbeiten möchte, da nicht jede Zeile relevant ist.

Hier mein Latex-Code


\lstinputlisting[style=Java,
caption={\lstinline{WebApi.java}-Datei des \FakeToken},
label=Lst_FT_WebApi,
captionpos=t,
linerange={1-13,38-40,61-63,78-80,84-86,89-90}]{CodeM/WebApi.java}

Unter http://tex.stackexchange.com/questions/110187/listings-line-numbers-that-match-the-linerange-specification habe ich ein Makro(?!) gefunden welches dies so ziemlich umsetzt ...

Leider hat es einen Schönheitsfehler den ich durch meine geringen Kenntnisse nicht beheben kann.

Für die linerange 38-40 schreibt es z.B. die Zielennummern 38,40,40 und nicht 38,39,40.
Außerdem möchte ich gerne zwischen den ausgelassenen Zeilen vielleicht mittels \dots ein paar punkte einfügen damit man sieht, dass da was ausgelassen wurde ohne auf die Zahlen zu schauen.

Hab schon ein paar Konstrukte mit verschiedenen \lstinputlisting's gesehen.
Dies möchte ich aber vermeiden da ich für das gesamte Listing nur eine Caption möchte ...

Hoffe die Lösung ist trivial und ich steh nur voll auf der Leitung :-)

lg

rais
12-03-2014, 18:02
Hallo,


Unter http://tex.stackexchange.com/questions/110187/listings-line-numbers-that-match-the-linerange-specification habe ich ein Makro(?!) gefunden welches dies so ziemlich umsetzt ...

Leider hat es einen Schönheitsfehler den ich durch meine geringen Kenntnisse nicht beheben kann.

warum demonstrierst Du Dein Problem nicht an einem konkreten Beispiel (http://www.mrunix.de/forums/showthread.php?t=66921)?
MfG

Xeri
15-03-2014, 15:48
Hab mal den Fehler wie rais angemerkt als PDF angehängt.

Der dazugehörende Code:


\lstinputlisting[style=Smali,
caption={Erweiterung der Methode \lstinline{writeLog()} des \ftts als Java-Bytecode.},
label=Lst_FT_writeLog_smali,
captionpos=t,
%linerange={1-12,17-17,43-43,50-50,71-71,78-78,91-91,98-98,102-102,107-107,110-111}
]{CodeM/erweiterung_writeLog.smali}



Wie Ihr im PDF erkennen könnt besteht der Fehler in der Nummerierung der Zeilen.
Wie mir gerade aufgefallen ist als ich das Minibeispiel erstellt habe tritt der Fehler nur bei Leerzeilen auf die ich aber erhalten möchte.

rais
16-03-2014, 18:14
Hab mal den Fehler wie rais angemerkt als PDF angehängt.

bist Du meinem Link nicht gefolgt?


Der dazugehörende Code:

ist a. unvollständig und b. ohne die einzubindende Datei nutzlos.
Evtl tut es


\documentclass{article}

\usepackage{listings}

\makeatletter
\newcounter{mylstlineno}
\newcommand*\my@lst@lineno{%
\setcounter{mylstlineno}{\value{lstnumber}}%
\addtocounter{mylstlineno}{\lst@firstline}%
\addtocounter{mylstlineno}{-1}%
\themylstlineno
}
\lst@Key{numbers}{none}{%
\let\lst@PlaceNumber\@empty
\lstKV@SwitchCases{#1}%
{none&\\%
left&\def\lst@PlaceNumber{\llap{\normalfont
\lst@numberstyle{\thelstnumber}\kern\lst@numbersep }}\\%
leftliteral&\def\lst@PlaceNumber{\llap{\normalfont
\lst@numberstyle{\my@lst@lineno}\kern\lst@numberse p}}\\%
right&\def\lst@PlaceNumber{\rlap{\normalfont
\kern\linewidth \kern\lst@numbersep
\lst@numberstyle{\thelstnumber}}}%
}{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
\makeatother

\lstset{
numbers=leftliteral,
language={[LaTeX]Tex},
basicstyle=\ttfamily\footnotesize
}

\begin{document}
\lstinputlisting[linerange={1-3}]{\jobname.tex}
\lstinputlisting[caption={gesamt}, numbers=left]{\jobname.tex}
\end{document}

Falls nicht, poste bitte Dein eigenes Minimalbeispiel. Wie sowas auch ohne externen Code möglich ist, kannst Du diesem Beispiel entnehmen.

MfG