NAME

Quiq::LaTeX::LongTable - Erzeuge LaTeX longtable

BASE CLASS

Quiq::Hash

SYNOPSIS

Der Code

  use Quiq::LaTeX::LongTable;
  use Quiq::LaTeX::Code;
  
  my $tab = Quiq::LaTeX::LongTable->new(
      alignments => ['l','r','c'],
      caption => 'Ein Test',
      titles => ['Links','Rechts','Zentriert'],
      rows => [
          ['A',1,'AB'],
          ['AB',2,'CD'],
          ['ABC',3,'EF'],
          ['ABCD',4,'GH'],
      ],
  );
  
  my $l = Quiq::LaTeX::Code->new;
  my $code = $tab->latex($l);

produziert

  \begin{longtable}{|lrc|}
  \hline
  Links & Rechts & Zentriert \\ \hline
  \endfirsthead
  \multicolumn{3}{r}{\emph{Fortsetzung}} \
  \hline
  Links & Rechts & Zentriert \\ \hline
  \endhead
  \hline
  \multicolumn{3}{r}{\emph{weiter nächste Seite}} \
  \endfoot
  \caption{Ein Test}
  \endlastfoot
  A & 1 & AB \\ \hline
  AB & 2 & CD \\ \hline
  ABC & 3 & EF \\ \hline
  ABCD & 4 & GH \\ \hline
  \end{longtable}

was im LaTeX-Dokument in etwa so aussieht

  +--------------------------+
  | Links  Rechts  Zentriert |
  +--------------------------+
  | A           1     AB     |
  +--------------------------+
  | AB         12     CD     |
  +--------------------------+
  | ABC       123     EF     |
  +--------------------------+
  | ABCD     1234     GH     |
  +--------------------------+
  
      Tabelle 1: Ein Test

METHODS

Konstruktor

new() - Instantiiere LaTeX LongTable-Objekt

Synopsis

  $tab = $class->new(@keyVal);

Arguments

align => $align (Default: 'c')

Horizontale Ausrichtung der Tabelle auf der Seite. Mögliche Werte: 'l', 'c'.

alignments => \@alignments (Default: [])

Liste der Kolumnen-Ausrichtungen. Mögliche Werte je Kolumne: 'l', 'r', 'c'.

border => $border (Default: 'hHV' oder 'hvHV' bei multiLine)

Linien in und um die Tabelle. Der Wert ist eine Zeichenkette, die sich aus den Zeichen 't', 'h', 'v', 'H', 'V' zusammensetzt.

callbackArguments => \@arr (Default: [])

Liste von zusätzlichen Argumenten, die an die Funktionen rowCallback und titleCallback übergeben werden.

caption => $str

Unterschrift zur Tabelle.

indent => $length

Einrückung der Tabelle vom linken Rand. Die Option align darf dann nicht gesetzt sein, auch nicht auf 'l'.

label => $str

Label der Tabelle, über welches sie referenziert werden kann.

language => 'german'|'english'

Die Sprache des LaTeX-Dokuments.

multiLine => $bool (Default: undef)

Wende \makecell auf alle Kolumnen an. Diese Option muss aktiviert werden, wenn mehrzeilige Zellen mehrzeilig dargestellt werden sollen, denn dies kann LaTeX nicht. Wird die Option aktiviert, muss das Package makecell geladen werden.

rows => \@rows (Default: [])

Liste der Tabellenzeilen.

rowCallback => sub {} (Default: siehe unten)

Subroutine, die für jede Zeile in @rows die Zeileninformation liefert, die in den LaTeX-Code eingesetzt wird. Default:

  sub {
      my ($self,$l,$row,$n) = @_;
  
      my @row;
      for my $val (@$row) {
          push @row,$l->protect($val);
      }
  
      return @row;
  }
titleColor => $color

Farbe der Titelzeile.

titleWrapper => $code

Zeichenkette, die um jeden Kolumnentitel gelegt wird. Für %s wird der Titel eingesetzt. Auf diesem Weg kann ein Makro auf jeden Titel angewendet werden. Z.B. serifenlosen, fetten Font einstellen:

  titleWrapper => '\textsf{\textbf{%s}}'
titles => \@titles (Default: [])

Liste der Kolumnentitel.

titleCallback => sub {} (Default: siehe unten)

Subroutine, die die Titelinformation liefert, die in den LaTeX-Code eingesetzt wird. Default:

  sub {
      my ($self,$l,$title,$n) = @_;
      return $l->protect($title);
  }

Returns

LongTable-Objekt

Description

Instantiiere ein LaTeX LongTable-Objekt und liefere eine Referenz auf dieses Objekt zurück.

Objektmethoden

latex() - Generiere LaTeX-Code

Synopsis

  $code = $tab->latex($l);
  $code = $class->latex($l,@keyVal);

Description

Generiere den LaTeX-Code des Objekts und liefere diesen zurück. Als Klassenmethode gerufen, wird das Objekt intern erzeugt und mit den Attributen @keyVal instantiiert.

VERSION

1.163

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.