Hallo liebe Gemeinde,

ich bin ziemlicher Neuling, was LaTex betrifft und ich suche jetzt verzweifelt seit zwei Tagen bei Google nach einer Lösung, aber erfolglos - entweder bin ich zu doof oder aber es gibt (noch) keine Lösung dafür (was ich mir fast nicht vorstellen kann)

Zu meinem Problem: Ich übergebe in einer Tabelle 9 Parameter, darunter auch in einer Spaltze die Wochentage von Montag bis Sonntag. Diese möchte ich aber nun gern auf die ersten zwei Buchstaben kürzen, das kann doch im Grunde nicht so schwierig sein - oder doch...?? Shocked

Vielleicht könnt ihr mir ja in dieser Sache weiterhelfen, bin für jede Hilfe dankbar!

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{Freitag}{01.05.2015}{}{}{}{}{}{}{BMW}
 \rowcolor[gray]{.9}\row{Samstag}{02.05.2015}{}{}{}{}{}{}{BMW}
 \rowcolor[gray]{.9}\row{Sonntag}{03.05.2015}{}{}{}{}{}{}{BMW}
 \row{Montag}{04.05.2015}{}{}{}{}{}{}{BMW}
 \row{Dienstag}{05.05.2015}{}{}{}{}{}{}{BMW}
 \row{Mittwoch}{06.05.2015}{}{}{}{}{}{}{BMW}
 \row{Donnerstag}{07.05.2015}{14:00}{18:00}{}{}{4,00}{0,5}{BMW}
 \row{Freitag}{08.05.2015}{09:00}{18:00}{12:00}{13:00}{4,00}{0,5}{BMW}
 \hline                  
 \gesamt{8,00}{2,00}

}{\end{longtable}}

\begin{document}

\begin{timesheet}

\end{timesheet}

\end{document}

Noch ein Hinweis: Die jetzt festgeschriebenen Werte werden später durch Textmarken/Platzhalter ersetzt und ich bekomme die Daten dazu von einem anderen Programm übergeben, deshalb entfällt das händische kürzen. ;)

Grüße und vielen Dank schon mal

Snoopy

gefragt 17 Sep '15, 04:29

Snoopy%20EL's gravatar image

Snoopy EL
10410
Akzeptiert: 75%

bearbeitet 17 Sep '15, 05:00

Clemens's gravatar image

Clemens
19.0k113060

Willkommen auf der TeXwelt!

(17 Sep '15, 05:08) Clemens

Das Beispiel ist übrigens nicht lauffähig, da \gesamt nicht definiert ist. Bitte beachte künftig Was ist ein vollständiges Minimalbeispiel oder kurz VM und wie erstelle ich dieses?.

(17 Sep '15, 07:31) saputello
1

BTW: Crosspost. Zukünftig bitte selbst verlinken, damit man sehen kann, falls es bereits eine passende Antwort gibt.

(17 Sep '15, 07:48) saputello

Das geht schon, allerdings braucht es dazu nicht nur LaTeX's \newcommand sondern TeX's \def. Mit Hilfe eines begrenzten Arguments (siehe z.B. meine Antwort in ] in optionalen Argumenten) lassen sich die ersten zwei Token einer Tokenliste abspalten:

Open in Online-Editor
\makeatletter
\newcommand*\@getfirsttwo{}
\def\@getfirsttwo#1#2#3\q@stop{#1#2}

Das können wir dann in ein bequemeres Makro packen:

Open in Online-Editor
\newcommand*\kuerzel[1]{\@getfirsttwo#1\empty\empty\q@stop}
\makeatother

Die \emptys sind nur da, um einen Fehler zu vermeiden, falls \kuerzel mit weniger als zwei Token aufgerufen wird.

Ein Test:

Open in Online-Editor
\documentclass{article}

\makeatletter
\newcommand*\@getfirsttwo{}
\def\@getfirsttwo#1#2#3\q@stop{#1#2}
\newcommand*\kuerzel[1]{\@getfirsttwo#1\empty\empty\q@stop}
\makeatother

\begin{document}

\kuerzel{Montag}
\kuerzel{Dienstag}
\kuerzel{Mittwoch}
\kuerzel{Donnerstag}
\kuerzel{Freitag}
\kuerzel{Samstag}
\kuerzel{Sonntag}

\end{document}
Permanenter link

beantwortet 17 Sep '15, 04:57

Clemens's gravatar image

Clemens
19.0k113060

bearbeitet 17 Sep '15, 05:03

Super, das klappt einwandfrei! Da wäre ich wahrscheinlich nie drauf gekommen... :)

Vielen Dank und einen schönen Tag noch!

Gruß

Snoopy

(17 Sep '15, 05:09) Snoopy EL
2

@Snoopy ich habe Deine „Antwort“ in einen Kommentar umgewandelt. Antworten sind auf der TeXwelt immer Lösungen der oben gestellten Frage

(17 Sep '15, 05:11) Clemens

Das Paket xstring bietet vielfältige Möglichkeiten, um Strings zu bearbeiten. So kann man beispielsweise mit \StrLeft{String}{Anzahl} nur die max. Anzahl vorderen Zeichen von String ausgeben. Eine sehr einfache Lösung damit sähe dann so aus:

Open in Online-Editor
\documentclass[10pt,a4paper]{article}% article unterstützt 9pt nicht!
\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{graphicx}% pdftex erkennt graphics selbst via graphics.cfg
\usepackage{longtable}
\usepackage{xstring}

\newcommand{\row}[9]{\StrLeft{#1}{2} & #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{Freitag}{01.05.2015}{}{}{}{}{}{}{BMW}
 \rowcolor[gray]{.9}\row{Samstag}{02.05.2015}{}{}{}{}{}{}{BMW}
 \rowcolor[gray]{.9}\row{Sonntag}{03.05.2015}{}{}{}{}{}{}{BMW}
 \row{Montag}{04.05.2015}{}{}{}{}{}{}{BMW}
 \row{Dienstag}{05.05.2015}{}{}{}{}{}{}{BMW}
 \row{Mittwoch}{06.05.2015}{}{}{}{}{}{}{BMW}
 \row{Donnerstag}{07.05.2015}{14:00}{18:00}{}{}{4,00}{0,5}{BMW}
 \row{Freitag}{08.05.2015}{09:00}{18:00}{12:00}{13:00}{4,00}{0,5}{BMW}
 \hline                  
 %\gesamt{8,00}{2,00}% auskommentiert, weil nicht definiert
}{\end{longtable}}

\begin{document}

\begin{timesheet}

\end{timesheet}

\end{document}
Permanenter link

beantwortet 17 Sep '15, 07:36

saputello's gravatar image

saputello
18.4k22352

bearbeitet 18 Sep '15, 03:52

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×19
×15
×4

Frage gestellt: 17 Sep '15, 04:29

Frage wurde angeschaut: 1,281 Mal

Zuletzt aktualisiert: 18 Sep '15, 03:52