mehrere cmidrule mit eigenem befehl erzeugt leerzeile

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: mehrere cmidrule mit eigenem befehl erzeugt leerzeile

von Krutius » Mi 14. Mär 2012, 15:17

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

von Apfeltasche » Mi 14. Mär 2012, 15:02

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.

mehrere cmidrule mit eigenem befehl erzeugt leerzeile

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}

Nach oben