Seite 1 von 1

mehrere cmidrule mit eigenem befehl erzeugt leerzeile

Verfasst: Mi 14. Mär 2012, 14:48
von Krutius
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}

Verfasst: Mi 14. Mär 2012, 15:02
von Apfeltasche
Ohne jetzt verstanden zu haben, was dein Code da oben macht, komme ich mit
\begin{document}
   \begin{tabularx}{\textwidth}{XX}
      \toprule{}
         Col1
      &   Col2
      \smidrule[0.15em]{2}
         Lorem Ipsum
      &    12
      \\
      \bottomrule
   \end{tabularx}
\end{document} 
zum gewünschten Ergebnis. Also einmal den Zeilenumbruch weglassen. Liegt vielleicht an deiner Kommando-Definition.

Verfasst: Mi 14. Mär 2012, 15:17
von Krutius
Das geht in der tat. Trotzdem wäre ich um eine andere Lösung froh, da das \\ da meiner Meinung nach hin gehört. :?:

Trotzdem Danke ++