von die_nase » So 17. Mai 2015, 13:04
Hallo zusammen,
ich möchte gerne einen neuen Spaltentyp definieren, bei dem die vorher definierte Länge mit einem bestimmten Wert (nämlich dem, der als Argument übergeben wird) multipliziert wird. Also anstatt bspl. p{3cm} an longtable zu übergeben, möchte ich P{0.12} übergeben, wobei die 0.12 nur als Faktor für eine andere (zuvor definierte) Länge dienen sollen.
Vielleicht wird es an dem MB deutlicher.
\documentclass[11pt, oneside]{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{calc}
\newlength{\Spaltenteiler}
\newlength{\Hilfsleng}
\setlength{\Spaltenteiler}{\textwidth-2\tabcolsep} %Längendefinition funktioniert
\newcolumntype{P}[1]{
\setlength{\Hilfsleng}{#1\Spaltenteiler} %Hier klappt es nicht
p{\Hilfsleng}
}
\begin{document}
\begin{longtable}{P{0.125}P{0.1}P{0.3}P{0.125}} %Spaltendefinition
\caption{Tabelle}\\
\toprule
\addlinespace
Tab1 & Tab2 & Tab3 & Tab4\\
\addlinespace
\midrule
\endfirsthead
\toprule
\midrule
\endhead
Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text\\
\end{longtable}
\end{document}
Das liefert mir den Fehler:
./Ohne-Titel.tex:30: Package array Error: Illegal pream-token (\setlength): `c
' used.
See the array package documentation for explanation.
Type H <return> for immediate help.
...
l.30 ...n{longtable}{P{0.125}P{0.1}P{0.3}P{0.125}}
?
Wenn ich jedoch den Faktor direkt mit der definierten Länge an p{} übergebe, dann funktioniert es einwandfrei:
\documentclass[11pt, oneside]{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{calc}
\newlength{\Spaltenteiler}
\newlength{\Hilfsleng}
\setlength{\Spaltenteiler}{\textwidth-2\tabcolsep} %Längendefinition funktioniert
\begin{document}
\begin{longtable}{p{0.125\Spaltenteiler}p{0.1\Spaltenteiler}p{0.3\Spaltenteiler}p{0.125\Spaltenteiler}} %Spaltendefinition
\caption{Tabelle}\\
\toprule
\addlinespace
Tab1 & Tab2 & Tab3 & Tab4\\
\addlinespace
\midrule
\endfirsthead
\toprule
\midrule
\endhead
Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text\\ \addlinespace
Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text\\ \addlinespace
\end{longtable}
\end{document}
Hat jemand eine Lösung, sodass ich einfach P{0.12} schreiben kann und nicht, so wie in dem zweiten Beispiel, p{0.12\Spaltenteiler}?
Hallo zusammen,
ich möchte gerne einen neuen Spaltentyp definieren, bei dem die vorher definierte Länge mit einem bestimmten Wert (nämlich dem, der als Argument übergeben wird) multipliziert wird. Also anstatt bspl. p{3cm} an longtable zu übergeben, möchte ich P{0.12} übergeben, wobei die 0.12 nur als Faktor für eine andere (zuvor definierte) Länge dienen sollen.
Vielleicht wird es an dem MB deutlicher.
[code]
\documentclass[11pt, oneside]{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{calc}
\newlength{\Spaltenteiler}
\newlength{\Hilfsleng}
\setlength{\Spaltenteiler}{\textwidth-2\tabcolsep} %Längendefinition funktioniert
\newcolumntype{P}[1]{
\setlength{\Hilfsleng}{#1\Spaltenteiler} %Hier klappt es nicht
p{\Hilfsleng}
}
\begin{document}
\begin{longtable}{P{0.125}P{0.1}P{0.3}P{0.125}} %Spaltendefinition
\caption{Tabelle}\\
\toprule
\addlinespace
Tab1 & Tab2 & Tab3 & Tab4\\
\addlinespace
\midrule
\endfirsthead
\toprule
\midrule
\endhead
Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text\\
\end{longtable}
\end{document}
[/code]
Das liefert mir den Fehler:
[code]
./Ohne-Titel.tex:30: Package array Error: Illegal pream-token (\setlength): `c
' used.
See the array package documentation for explanation.
Type H <return> for immediate help.
...
l.30 ...n{longtable}{P{0.125}P{0.1}P{0.3}P{0.125}}
?
[/code]
Wenn ich jedoch den Faktor direkt mit der definierten Länge an p{} übergebe, dann funktioniert es einwandfrei:
[code]
\documentclass[11pt, oneside]{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{calc}
\newlength{\Spaltenteiler}
\newlength{\Hilfsleng}
\setlength{\Spaltenteiler}{\textwidth-2\tabcolsep} %Längendefinition funktioniert
\begin{document}
\begin{longtable}{p{0.125\Spaltenteiler}p{0.1\Spaltenteiler}p{0.3\Spaltenteiler}p{0.125\Spaltenteiler}} %Spaltendefinition
\caption{Tabelle}\\
\toprule
\addlinespace
Tab1 & Tab2 & Tab3 & Tab4\\
\addlinespace
\midrule
\endfirsthead
\toprule
\midrule
\endhead
Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text\\ \addlinespace
Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text & Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text, Das ist ein langer Text\\ \addlinespace
\end{longtable}
\end{document}
[/code]
Hat jemand eine Lösung, sodass ich einfach P{0.12} schreiben kann und nicht, so wie in dem zweiten Beispiel, p{0.12\Spaltenteiler}?