mehrere cmidrule mit eigenem befehl erzeugt leerzeile

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Krutius
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mo 5. Mär 2012, 09:40

mehrere cmidrule mit eigenem befehl erzeugt leerzeile

Beitrag 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}

Apfeltasche
Forum-Century
Forum-Century
Beiträge: 113
Registriert: Mi 31. Aug 2011, 14:47

Beitrag 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.

Krutius
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mo 5. Mär 2012, 09:40

Beitrag 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 ++

Antworten