von Krutius » Mi 14. Mär 2012, 14:48
Hallo
Ich verwende mehrfach den befehl \cmidrule aus boktabs um spalten voneinander abzugrenzen. Dazu wollte ich mir einen eigenen Befehl definieren, welcher mit das hier abnimmt:
\cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(l){4-4}
Das ist mir mit einigem
googeln dann auch gelungen. Der von mir erstellte befehl erzeugt aber leider jeweils noch eine unerwünschte leerzeile in der Tabelle. Kann mir jemand einen tipp geben wie ich die wegkriege?
Vollständiges, funktionierendes Minimalbeispiel:
\documentclass[listof=totoc,oneside, 12pt, a4paper, titlepage, onecolumn, parskip=half]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ifthen}
% Script für mehrere cmidrules
\makeatletter
\newcount\colNo
\def\addtoks#1#2#3{\toks@=\expandafter{\the\toks@\cmidrule[#3](#2){#1-#1}}}
\newcommand\smidrule[2][\lightrulewidth]{%
\ifnum#2=1
\expandafter\addtoks\expandafter{\the\colNo}{}{#1}%
\else
\toks@={\tabularnewline}%
\colNo=0\relax
\loop\ifnum\colNo<#2\relax
\advance\colNo by 1
\ifnum\colNo=1% Erste Zeile
\expandafter\addtoks\expandafter{\the\colNo}{r}{#1}%
\else%
\ifnum\colNo=#2 %Letzte Zeile
\expandafter\addtoks\expandafter{\the\colNo}{l}{#1}%
\else% Mittlere Zeile
\expandafter\addtoks\expandafter{\the\colNo}{lr}{#1}%
\fi%
\fi%
\repeat%
\the\toks@%
\fi%
}
\makeatother
\begin{document}
\begin{tabularx}{\textwidth}{XX}
\toprule{}
Col1
& Col2
\\
\smidrule[0.15em]{2}
Lorem Ipsum
& 12
\\
\bottomrule
\end{tabularx}
\end{document}
Hallo
Ich verwende mehrfach den befehl \cmidrule aus boktabs um spalten voneinander abzugrenzen. Dazu wollte ich mir einen eigenen Befehl definieren, welcher mit das hier abnimmt:
[code]
\cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(l){4-4}
[/code]
Das ist mir mit einigem [url=http://www.mrunix.de/forums/showpost.php?p=340719&postcount=13]googeln[/url] dann auch gelungen. Der von mir erstellte befehl erzeugt aber leider jeweils noch eine unerwünschte leerzeile in der Tabelle. Kann mir jemand einen tipp geben wie ich die wegkriege?
Vollständiges, funktionierendes Minimalbeispiel:
[code]
\documentclass[listof=totoc,oneside, 12pt, a4paper, titlepage, onecolumn, parskip=half]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ifthen}
% Script für mehrere cmidrules
\makeatletter
\newcount\colNo
\def\addtoks#1#2#3{\toks@=\expandafter{\the\toks@\cmidrule[#3](#2){#1-#1}}}
\newcommand\smidrule[2][\lightrulewidth]{%
\ifnum#2=1
\expandafter\addtoks\expandafter{\the\colNo}{}{#1}%
\else
\toks@={\tabularnewline}%
\colNo=0\relax
\loop\ifnum\colNo<#2\relax
\advance\colNo by 1
\ifnum\colNo=1% Erste Zeile
\expandafter\addtoks\expandafter{\the\colNo}{r}{#1}%
\else%
\ifnum\colNo=#2 %Letzte Zeile
\expandafter\addtoks\expandafter{\the\colNo}{l}{#1}%
\else% Mittlere Zeile
\expandafter\addtoks\expandafter{\the\colNo}{lr}{#1}%
\fi%
\fi%
\repeat%
\the\toks@%
\fi%
}
\makeatother
\begin{document}
\begin{tabularx}{\textwidth}{XX}
\toprule{}
Col1
& Col2
\\
\smidrule[0.15em]{2}
Lorem Ipsum
& 12
\\
\bottomrule
\end{tabularx}
\end{document}
[/code]