Anzeige:
Ergebnis 1 bis 4 von 4

Thema: (Mehrseitige) Tabelle mit lstlisting als Inhalt?

  1. #1
    Registrierter Benutzer
    Registriert seit
    10.10.2002
    Beiträge
    148

    (Mehrseitige) Tabelle mit lstlisting als Inhalt?

    Hallo,
    ich benutze momentan longtable für mehrseitige Tabellen. Das funktioniert auch ohne Probleme. Allerdings taucht ein Problem bei einer Tabelle mit zwei Spalten auf. Links steht ein Wert und rechts soll Quelltext dazu erscheinen. Für die Darstellung des Quelltextes verwende ich \begin{lstlisting}...\end{lstlisting}. Allerdings kann ich die lstlisting umgebung nicht in der tabelle verwenden.

    Gibt es eine Möglichkeit die Umgebung in einer (mehrseitigen) Tabelle zu verwenden?

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    Zunaechst wollte ich Dich fragen, warum das bei Dir nicht klappt, bis ich dann merkte, dass ich einmal mehr um die Ecke denken muss:
    Du meinst, dass das listings und nicht eben nur die Tabelle sich ueber mehrere Seiten erstreckt, was aus Deiner Beschreibung nicht zwingend hervorgeht, ich aber nun unterstelle.

    AFAIK laesst longtable keinen Seitenumbruch innerhalb einer Zelle zu, was aber notwendig waere, da das listings sich ueber 2 o.m. Seiten erstrecken kann. Insofern waere eine Loseung nur zu suchen in einem manuellen 'splitting' des listings-Textes selbst. Dies kann allerdings dann muehsam werden, wenn es sich um 'viele' solcher Aktionen handelt.

    Ich weiss nicht genau, ob supertabular 'mehr' kann. Ich weiss, es gibt eine allerdings auch manuelle Moeglichkeit innerhalb eines Textes einen Umbruch zu provozieren. Ob das bei listings funktioniert, wage ich zu bezweifeln, da (wohl sicherlich) der eingefuegte Command als Code und nicht als Command aufgefasst werde wuerde ...

    Die Loesung liegt IMO im 'parallel' package (wenn ueberhaupt es so 'kompliziert' werden muss und der 'lstexpm style' nicht zum Tragen kommen koennte).
    Ein Minimalbespiel zeigt den Ansatz (evtl. Anpassungen an eigene Bedarfe werden notwendig sein):

    \documentclass[10pt]{article}
    \usepackage{geometry}
    \geometry{paperwidth=297.3mm,paperheight=210.2mm}

    \usepackage{parallel,calc}

    %\usepackage{lstxmpl}
    \usepackage{listings}
    \lstset{basicstyle=\footnotesize,frame=tb,
    numbers=left,
    numberstyle=\tiny, stepnumber=2, numbersep=10pt,
    xleftmargin=.3\textwidth,
    }%

    \begin{document}

    \begin{Parallel}[v]{.2\textwidth}{.7\textwidth}
    \ParallelLText{%
    Codesnippet 'listings.sty'
    }
    \ParallelRText{%
    \small
    \begin{lstlisting}{}
    %% This is file `listings.sty',
    %% generated with the docstrip utility.
    %%
    %% The original source files were:
    %%
    %% listings-1.3.dtx (with options: `kernel')
    %%
    %% Please read the software license in listings-1.3.dtx or listings-1.3.pdf.
    %%
    %% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed
    %% elsewhere in this file.
    %%
    %% Send comments and ideas on the package, error reports and additional
    %% programming languages to .
    %%
    \def\filedate{2004/09/07}
    \def\fileversion{1.3}
    \NeedsTeXFormat{LaTeX2e}
    \AtEndOfPackage{\ProvidesPackage{listings}
    [\filedate\space\fileversion\space(Carsten Heinz)]}
    \def\lst@CheckVersion#1{\edef\reserved@a{#1}%
    \ifx\lst@version\reserved@a \expandafter\@gobble
    \else \expandafter\@firstofone \fi}
    \let\lst@version\fileversion
    \def\lst@InputCatcodes{%
    \makeatletter \catcode`\"12%
    \catcode`\^^@\active
    \catcode`\^^I9%
    \catcode`\^^L9%
    \catcode`\^^M9%
    \catcode`\%14%
    \catcode`\~\active}
    \def\lst@RestoreCatcodes#1{%
    \ifx\relax#1\else
    \noexpand\catcode`\noexpand#1\the\catcode`#1\relax
    \expandafter\lst@RestoreCatcodes
    \fi}
    \edef\lst@RestoreCatcodes{%
    \noexpand\lccode`\noexpand\/`\noexpand\/%
    \lst@RestoreCatcodes\"\^^I\^^M\~\^^@\relax}
    \lst@InputCatcodes
    \AtEndOfPackage{\lst@RestoreCatcodes}
    \def\@lst{lst}
    \def\lst@IfSubstring#1#2{%
    \def\lst@temp##1#1##2##3\relax{%
    \ifx \@empty##2\expandafter\@secondoftwo
    \else \expandafter\@firstoftwo \fi}%
    \expandafter\lst@temp#2#1\@empty\relax}
    \def\lst@IfOneOf#1\relax#2{%
    \def\lst@temp##1,#1,##2##3\relax{%
    \ifx \@empty##2\expandafter\@secondoftwo
    \else \expandafter\@firstoftwo \fi}%
    \expandafter\lst@temp\expandafter,#2,#1,\@empty\re lax}
    \def\lst@DeleteKeysIn#1#2{%
    \expandafter\lst@DeleteKeysIn@\expandafter#1#2,\re lax,}
    \def\lst@DeleteKeysIn@#1#2,{%
    \ifx\relax#2\@empty
    \expandafter\@firstoftwo\expandafter\lst@RemoveCom mas
    \else
    \ifx\@empty#2\@empty\else
    \def\lst@temp##1,#2,##2{%
    ##1%
    \ifx\@empty##2\@empty\else
    \expandafter\lst@temp\expandafter,%
    \fi ##2}%
    \edef#1{\expandafter\lst@temp\expandafter,#1,#2,\@ empty}%
    \fi
    \fi
    \lst@DeleteKeysIn@#1}
    ...
    \end{lstlisting}
    }
    \end{Parallel}


    \end{document}
    %%
    %% End of file `xmpl.tex'.

    edico

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.10.2002
    Beiträge
    148
    Danke für die Antwort! Ich hatte mich da wohl etwas unklar ausgedrückt, entschuldigung.

    Bin das Problem jetzt umgangen und habe die Sachen einfach aus der Tabelle rausgenommen und so im Text beschrieben inkl. lstlisting. Aber ich werde mir deinen Ansatz noch anschauen, man lernt ja nie aus ;-)

    Auf jeden Fall danke!

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    Nun kann es vielleicht sein, dass 2 Codes nebeneinander zu stellen sind -- auch das laesst sich mit 'parallel' vernuenftig loesen:

    \documentclass[10pt]{article}
    \usepackage{geometry}
    \geometry{paperwidth=297.3mm,paperheight=210.2mm}
    \usepackage{parallel,calc}
    %\usepackage{lstxmpl}
    \usepackage{listings}
    \lstset{basicstyle=\footnotesize,frame=tb,
    numbers=left,
    numberstyle=\tiny, stepnumber=2, numbersep=10pt,
    %xleftmargin=.5\textwidth,
    }%

    \begin{document}
    Hier werden 2 code snippets nebeneinander pr\"asentiert unter Zuhilfenahme des 'parallel' Pakets. \par
    Die Textweite wird parit\"atisch geteilt und die jeweilgen listing werden durch margin-Einz\"uge angepasst:

    \begin{verbatim}
    -----------------------------------------------------------------------
    linke Haelfte rechte Haelfte
    -----------------------------------------------------------------------
    .475\textwidth <-- parallel--> .475\textwidth
    xrightmargin=.525\textwidth <--listings --> xleftmargin=.525\textwidth
    -----------------------------------------------------------------------
    \end{verbatim}

    \begin{Parallel}[v]{.475\textwidth}{.475\textwidth}
    \ParallelLText{%
    \small \lstset{xrightmargin=.525\textwidth}
    \begin{lstlisting}{}
    %% This is file `listings.sty',
    %% generated with the docstrip utility.
    %%
    %% The original source files were:
    %%
    %% listings-1.3.dtx (with options: `kernel')
    \end{lstlisting}
    }
    \ParallelRText{%
    \small \lstset{xleftmargin=.525\textwidth}
    \begin{lstlisting}{}
    %% This is file `listings.sty',
    %% generated with the docstrip utility.
    %%
    %% The original source files were:
    %%
    %% listings-1.3.dtx (with options: `kernel')
    \end{lstlisting}
    }
    \end{Parallel}

    \end{document}
    %%
    %% End of file `xmply.tex'.

    edico

Lesezeichen

Berechtigungen

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