Hallo liebe Gemeinde,

da das beim letzten Mal so gut und fix geklappt hat, bräuchte ich noch einmal Eure Hilfe. Ich erzeuge für einen Kunden folgendes Dokument:

Open in Online-Editor
\documentclass[9pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{ngerman}
\usepackage{colortbl}
\usepackage[paper=a4paper,left=25mm,right=25mm,top=15mm,bottom=15mm]{geometry}
\usepackage[pdftex]{graphicx}
\usepackage{longtable}

\newcommand{\row}[9]{#1 & #2 & #3 & #4 & #5 & #6 & #7 & #8 & #9 \\ }    % \row{datum}{art}{arbeit_von}{arbeit_bis}{pause_von}{pause_bis}{stunden}{tage}{auftrag}

\newenvironment{timesheet}[1]
{   \setlength{\tabcolsep}{0pt}  
\noindent\begin{longtable}{@{}p{0.15\textwidth}p{0.15\textwidth}p{0.1\textwidth}p{0.1\textwidth}p{0.1\textwidth}p{0.1\textwidth}p{0.1\textwidth}p{0.1\textwidth}p{0.1\textwidth}}  
\multicolumn{2}{c}{}             & \multicolumn{2}{c}{Arbeitszeit}& \multicolumn{2}{c}{Pausenzeit}                \\[2ex]

Tag                   & Datum   & Kommen   & Gehen   & Kommen    & Gehen    & Std      & Tage    & Projekt    \\[2ex]

\endhead

\row{?[tag]}{?[datum]}{}{}{}{}{?[std]}{?[tage]}{?[projekt]}

\hline                  
%\gesamt{8,00}{2,00}

}{\end{longtable}}

\begin{document}

\begin{timesheet}

\end{timesheet}

\end{document}

Die einzelnen Parameter bekomme ich von einem anderen Programm übergeben, deshalb hier nur Platzhalter. Wenn die Tabelle nun aber sehr viele Einträge hat und sich dadurch das Dokument über zwei oder mehr Seiten erstreckt, wäre es toll, wenn in diesem Fall die Seitennummerierung einsetzen würde. Ist die Tabelle hingegen recht kurz und es bleibt bei einer Seite, soll keine Seitenzahl angezeigt werden.

Ich hoffe, es ist alles verständlich und ihr könnt mir irgendwie weiterhelfen.

Grüße und vielen Dank schon mal

Snoopy

gefragt 17 Sep '15, 11:30

Snoopy%20EL's gravatar image

Snoopy EL
1141813
Akzeptiert-Rate: 0%

bearbeitet 17 Sep '15, 14:15

2

article kennt übrigens keine Option 9pt, weshalb diese beim Beispiel auch als ungenutzt gemeldet wird. Außerdem ist es i.&nsp;d. R. eher von Vor- als von Nachteil, beim Laden von graphicx Option pdftex wegzulassen. Das Paket, bzw. die übliche graphics.cfg erkennt PDFTeX ohnehin selbst (und außerdem auch LuaTeX oder XeTeX).

(17 Sep '15, 14:36) saputello

Danke, das mit der graphics-Option wusste ich noch nicht (befasse mich erst seit zwei Tagen mit LaTex). Die 9pt sind noch drin, dich erst letter documentclass verwendet habe, deshalb noch nicht geändert, aber danke auch für diesen Hinweis. :)

(17 Sep '15, 14:43) Snoopy EL
1

letter kennt auch nur 10pt, 11pt und 12pt. Mehr Größen kennen beispielsweise die extsizes-Klassen, die KOMA-Script-Klassen oder memoir. Die Unterstützung für die zusätzlichen Größen ist dabei unterschiedlich und bedarf teilweise anderer Optionen.

(17 Sep '15, 15:18) saputello
3

BTW: Das Paket ngerman wird nicht mehr weiterentwickelt und hat ein paar Nachteile. Beispielsweise ändert es die Funktion des Zeichens " so früh, dass andere Pakete dadurch beeinträchtigt werden können. Daher sei stattdessen \usepackage[ngerman]{babel} empfohlen. Anleitungen, Vorlagen, Hilfeseiten, Tutorien o. ä. die eine der genannten Unschönheiten propagieren sind darüber hinaus mit Vorsicht zu betrachten.

(17 Sep '15, 15:21) saputello

Ohje, da hab ich ja noch einiges auszubessern... :) Aber vielen Dank für die ganzen Hinweise, ich werde mich damit beschäftigen. Toll übrigens, dass hier nicht nur straight die Fragen beantwortet, sondern auch nebenbei noch Unterstützung geboten wird. thumbsup :)

(17 Sep '15, 15:30) Snoopy EL

Du kannst das Paket lastpage benutzen:

Open in Online-Editor
\documentclass[10pt,a4paper]{article}
\usepackage{longtable}
\usepackage{lastpage,refcount}

\newcommand{\row}[9]{#1 & #2 & #3 & #4 & #5 & #6 & #7 & #8 & #9 \\ }    % \row{datum}{art}{arbeit_von}{arbeit_bis}{pause_von}{pause_bis}{stunden}{tage}{auftrag}

\newenvironment{timesheet}[1]
  {\setlength{\tabcolsep}{0pt}%
   \begin{longtable} 
     {@{}p{0.15\textwidth}p{0.15\textwidth}*7{p{0.1\textwidth}}}  
  \multicolumn{2}{c}{}  & \multicolumn{2}{c}{Arbeitszeit}& \multicolumn{2}{c}{Pausenzeit}                \\[2ex]
Tag   & Datum   & Kommen   & Gehen   & Kommen    & Gehen    & Std      & Tage    & Projekt    \\[2ex]
\endhead
\row{?[tag]}{?[datum]}{}{}{}{}{?[std]}{?[tage]}{?[projekt]}
\hline                  
%\gesamt{8,00}{2,00}
}{\end{longtable}}

\AtBeginDocument{%
  \ifnum\getrefbykeydefault{LastPage}{page}{1} =1\relax \pagestyle{empty}\fi}

\begin{document}
\begin{timesheet}

\end{timesheet}

%\newpage foo
\end{document}
Permanenter link

beantwortet 17 Sep '15, 12:01

Herbert's gravatar image

Herbert
5.1k34
Akzeptiert-Rate: 31%

Danke Herbert, ich werde das gleich morgen live testen, aber im Online-Editor siehts schon mal sehr gut aus. Vielen Dank! :)

(17 Sep '15, 14:45) Snoopy EL

So, nun konnte ich es testen und wie erwartet, läuft es super! Besten Dank dafür. Und nur so aus Neugier, gäbe es auch einen Workaround ohne ein Paket zu laden?

(18 Sep '15, 08:44) Snoopy EL

Sicher, aber dann muss man einen größeren Aufwand treiben, denn die Seitenzahl kennt man ja erst am Ende des Dokuments und muss dann diese in die Hilfsdatei schreiben und beim zweiten Lauf einlesen. Das geht eben automatisch bei Verwendung der Pakete.

(18 Sep '15, 09:15) Herbert

@Herbert Warum muss in deiner Lösung das \relax hinter die 1?

(18 Okt '16, 08:48) tom75
1

@tom75: Damit TeX aufhört nach einer Zahl zu scannen. Man vergisst das gerne in den Fällen, in denen es wirklich wichtig ist. Also gewöhnt man sich besser an, es immer zu setzen.

(18 Okt '16, 09:18) saputello
1

@tom75: Angenommen \def\NuumerA{122}\def\NummerB{122} Dann wäre \ifnum\NummerA = \NummerB 12 \else 21 \fi ein Beispiel, wo es in de Hose geht; es wird 21 statt 12 ausgegeben. Das Leerzeichen zwischen \NummerB 12 wird von TeX "verschluckt" und es entsteht ein Vergleich von 122=12212, was eine falsche Aussage ist. Mit \relax nach \NummerB wäre das Problem nicht entstanden.

(18 Okt '16, 14:10) crazyhorse

@saputello @crazyhorse Ok, vielen Dank! D.h. im obigen Beispiel wäre es nicht notwendig, weil hier keine Zahl folgt, aber es ist sinnvoll, es immer zu setzen.

Die Frage kam auf, weil ich ein ähnliches Beispiel früher gesehen habe, und dort wurde das \relax nach dem \fi gesetzt, statt nach der Zahl.

(19 Okt '16, 08:55) tom75
Ergebnis 5 von 7 show 2 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×254
×25

gestellte Frage: 17 Sep '15, 11:30

Frage wurde gesehen: 7,967 Mal

zuletzt geändert: 19 Okt '16, 08:55