Anzeige:
Ergebnis 1 bis 7 von 7

Thema: cdashline - Liniendicke (\arrayrulewidth) und \hline

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.12.2011
    Beiträge
    42

    cdashline - Liniendicke (\arrayrulewidth) und \hline [GELOEST]

    Schönen Sonntag miteinander,


    [EDIT: Problem gelöst, siehe meinen letzten Post]
    http://www.mrunix.de/forums/showpost...09&postcount=7


    Zwei Fragen zum Package arydshln und der dazugehörigen Funktion \cdashline{von-bis}[dash/gap]
    System: MiKTeX 2.9 mit den neuesten Updates, TeXnicCenter 2.02 Stable (32 bit)

    1. Das Paket verträgt sich bei mir nicht mit \hline bzw. Abwandlungen davon (hier \hlineDOUB)

    Code:
    \documentclass{scrreprt}
    
    \usepackage{arydshln}
    \usepackage{tabulary}
    
    \newlength\savewidth
    \newcommand\hlineDOUB
    {
    	\noalign
    	{
    		\global\savewidth\arrayrulewidth
    		\global\arrayrulewidth 1pt			% Standard: 0.5pt
    	}
    	\hline
    	\noalign
    	{
    		\global\arrayrulewidth\savewidth
    	}
    }
    
    \begin{document}
    	\begin{table}[htbp]
    		\centering
    		\begin{tabulary}{15cm}{L|C|R}
    			aaaaaaaaaa	&aaaaaaaaaa	&aaaaaaaaaa\\ \hlineDOUB
    			a			&a			&a\\ \hline
    			a	&a	&a\\ \cdashline{2-2}[0.5pt/2.5pt]
    		\end{tabulary}
    	\end{table}
    \end{document}
    Das Resultat ist zwar wie gewünscht, doch ich bekomme 10 Fehlermeldungen:
    Code:
    ! Undefined control sequence.
    \adl@hline ...mpcnta \xdef \adl@rowsL {\adl@rowsL
    (#1/\number \@tempcnta );}...
    \end{tabulary}
    
    ! Undefined control sequence.
     \adl@connect
    \end{tabulary}
    
    ! Undefined control sequence.
    \adl@hline ...nta );}\xdef \adl@rowsR {\adl@rowsR
    (#1/\number \@tempcnta );}
    \end{tabulary}
    
    ! Undefined control sequence.
     \adl@connect
    \end{tabulary}
    ...
    2. Wie kann ich die Liniendicke/Linienbreite von \cdashline ändern?

    Um keine Fehler zu erzeugen, kann obiger Code abgeändert werde zu

    Code:
    \documentclass{scrreprt}
    
    \usepackage{arydshln}
    \usepackage{tabulary}
    
    \begin{document}
    	\begin{table}[htbp]
    		\centering
    		\begin{tabulary}{15cm}{L|C|R}
    			aaaaaaaaaa	&aaaaaaaaaa	&aaaaaaaaaa\\ \cdashline{1-3}[1pt/0pt]
    			a			&a			&a\\ \cdashline{1-3}[1pt/0pt]
    			a	&a	&a\\ \cdashline{2-2}[0.5pt/2.5pt]
    		\end{tabulary}
    	\end{table}
    \end{document}
    Ich ersetze also \hline durch \cdashline{1-3}[1pt/0pt]. Wie aber kann ich \hlineDOUB durch \cdashline ausdrücken? Könnte man lokal die \arrayrulewidth von \cdashline manipulieren und auf z.B. 2pt hochsetzen?
    Das Paket booktabs mit \midrule (bzw. \midrule[2pt] oder \newcommand\midruleDOUB{\midrule[2\lightrulewidth]} ... \mudruleDOUB) kann ich nicht verwenden, da die vertikalen Linien sonst von den horizontalen unterbrochen werden.
    Die eigentliche Tabelle ist etwas komplexer und benötigt die vertikalen Linien unbedingt.


    Vielen Dank im Voraus,
    Beste Grüße und schönen Restsonntag
    Geändert von Thesis (02-12-2013 um 12:48 Uhr) Grund: Problem gelöst

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Lade das Paket booktabs und verwende \midrule statt \hline. \midrule hat ein optionales Argument für die Linienstärke.

    Code:
    \documentclass{scrreprt}
    
    \usepackage{booktabs}
    \usepackage{arydshln}
    \usepackage{tabulary}
    
    \newcommand\midruleDOUB{\midrule[2\lightrulewidth]}
    
    \begin{document}
    \begin{table}[htbp]
      \centering
      \begin{tabulary}{15cm}{LRC}
        aaaaaaaaaa &aaaaaaaaaa &aaaaaaaaaa\\ \midrule[2pt]
        a &a &a\\ \midrule
        a &a &a\\ \midruleDOUB
        a &a &a\\ \cdashline{2-2}[0.5pt/2.5pt]
      \end{tabulary}
    \end{table}
    \end{document}
    Gruß
    Elke
    Geändert von esdd (01-12-2013 um 21:46 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.12.2011
    Beiträge
    42
    Hallo Elke,


    Vielen Dank für Deine Antwort, doch es ist nicht wonach ich suche.
    \midrule und die anderen Befehle von booktabs sind für Tabellen ohne vertikale Trennstriche ausgelegt, welche ich jedoch verwenden muss. Mit Trennstrichen entstehen knapp über und unter \midrule weiße Leerflächen, die ich nicht gebrauchen kann.

    Kann man vielleicht die Linienstärke direkt in \cdashline manipulieren?
    Und wieso gibt LaTeX zig Fehlermeldungen bei Kombination von arydshln und \hline aus?


    Nochmals Danke, Grüße

  4. #4
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Die Kombination von arydshln und \hrule ist schon möglich. Bei mir läuft folgendes fehlerfrei:

    Code:
    \documentclass{scrreprt}
    \usepackage{arydshln}
    %\usepackage{tabulary}
    \newlength\savewidth
    \newcommand\hlineDOUB
    {
      \noalign
      {
        \global\savewidth\arrayrulewidth
        \global\arrayrulewidth 1pt			% Standard: 0.5pt
      }
      \hline
      \noalign
      {
        \global\arrayrulewidth\savewidth
      }
    }
    
    \begin{document}
    \begin{table}[htbp]
      \centering
      \begin{tabular}{lrc}
        aaaaaaaaaa &aaaaaaaaaa	&aaaaaaaaaa\\ \hlineDOUB
        a a &a\\ \hline
        a &a &a\\ \cdashline{2-2}[0.5pt/2.5pt]
      \end{tabular}
    \end{table}
    \end{document}
    Es klappt auch noch, wenn ich tabulary vor arydshln lade. Erst wenn tabulary dann noch verwendet wird, funktioniert es nicht mehr. Kannst du vielleicht auf tabularx ausweichen? Muss aber ebenfalls vor arydshln geladen werden.

    Gruß
    Elke

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.12.2011
    Beiträge
    42
    Guten Abend Elke,


    Vielen Dank, Folgendes funktioniert nun:

    Code:
    \documentclass{scrreprt}
    \usepackage{array}
    \usepackage{arydshln}
    \usepackage{tabularx}
    
    \newlength\savewidth
    \newcommand\hlineDOUB
    {
      \noalign
      {
        \global\savewidth\arrayrulewidth
        \global\arrayrulewidth 1pt			% Standard: 0.5pt
      }
      \hline
      \noalign
      {
        \global\arrayrulewidth\savewidth
      }
    }
    
    \begin{document}
    \begin{table}[htbp]
      \centering
      \begin{tabularx}{15cm}{X|X|X}
        aaaaaaaaaa &aaaaaaaaaa	&aaaaaaaaaa\\ \hlineDOUB
        a &a &a\\ \hline
        a &a &a\\ \cdashline{2-2}[0.5pt/2.5pt]
      \end{tabularx}
    \end{table}
    \end{document}
    Es muss also zuerst array und dann arydshln geladen werden. Schließlich kann, je nach Bedarf, tabularx geladen werden.


    Dafür funktioniert bei mir tabulary nicht mehr (nicht weiter tragisch, aber seltsam):

    Code:
    \documentclass{scrreprt}
    \usepackage{array}
    \usepackage{arydshln}
    \usepackage{tabulary}
    
    \newlength\savewidth
    \newcommand\hlineDOUB
    {
      \noalign
      {
        \global\savewidth\arrayrulewidth
        \global\arrayrulewidth 1pt			% Standard: 0.5pt
      }
      \hline
      \noalign
      {
        \global\arrayrulewidth\savewidth
      }
    }
    
    \begin{document}
    \begin{table}[htbp]
      \centering
      \begin{tabulary}{15cm}{L|C|R}
        aaaaaaaaaa &aaaaaaaaaa	&aaaaaaaaaa\\
        a &a &a\\
        a &a &a\\
      \end{tabulary}
    \end{table}
    \end{document}

    Nochmals besten Dank, Grüße

  6. #6
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Wie ich schon geschrieben habe, lade tabularx vor arydshln. tabularx lädt dann automatisch auch array. Du brauchst array also nicht extra einzubinden, wenn du tabularx verwendest.

    Gruß
    Elke

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.12.2011
    Beiträge
    42
    Hallo Elke,



    Vielen Dank für deine Tipps.


    Es gibt aber übrigens eine recht einfache Lösung für die lokale Veränderung der Dicke von \cdashline. Im folgenden ist ein Beispiel, das dies verdeutlicht und Unterschiede zwischen \hline und \cdashline aufzeigt.

    Code:
    \documentclass{scrreprt}
    %\usepackage{array}		% Muss nicht geladen werden, da das Paket tabularx das Paket array lädt
    \usepackage{tabularx}
    %\usepackage{tabulary}	% Zahlreiche Fehlermeldungen wegen arydshln
    %\usepackage{booktabs}	% Kann geladen werden, sollte aber nicht in der selben Tabelle mit cdashline verwendet werden
    \usepackage{arydshln}
    
    % Makro für die Liniendicke von \cdashline
    % ... \ArrRlWdthSet{2pt}\cdashline{2-3}[0.5pt/3pt]\ArrRlWdthRestr ...
    \newdimen\arrayrulewidthsave
    \def\ArrRlWdthSet#1{\noalign{\global\arrayrulewidthsave\arrayrulewidth
    \global\arrayrulewidth#1\relax}}
    \def\ArrRlWdthRestr{\noalign{\global\arrayrulewidth\arrayrulewidthsave}}
    
    % \Befehl \hlineDOUB
    \newlength\savewidth
    \newcommand\hlineDOUB
    {
      \noalign
      {
        \global\savewidth\arrayrulewidth
        \global\arrayrulewidth 1pt			% Standard: 0.5pt
      }
      \hline
      \noalign
      {
        \global\arrayrulewidth\savewidth
      }
    }
    
    \begin{document}
    
    \begin{table}[htbp]
      \centering
      \begin{tabularx}{13cm}{XX|X:X;{0.5pt/3pt}X}
        %
    	aaaaa	&aaaaa	&aaaaa	&aaaaa	&aaaaa	\\ \hline
            a	&a	&a	&a	&a	\\ \cdashline{1-5}[1pt/0pt]
    	%
    	a	&a	&a	&a	&a	\\ \hlineDOUB
    	a	&a	&a	&a	&a	\\ \ArrRlWdthSet{1pt}\cdashline{1-5}[1pt/0pt]\ArrRlWdthRestr
    	%
    	a	&a	&a	&a	&a	\\ \cdashline{3-4}[1pt/0pt]
    	a	&a	&a	&a	&a	\\ \ArrRlWdthSet{1pt}\cdashline{3-4}[1pt/0pt]\ArrRlWdthRestr
    	%
    	%
    	a	&a	&a	&a	&a	\\ \cdashline{3-4}[0.5pt/3pt]
    	a	&a	&a	&a	&a	\\ \ArrRlWdthSet{1pt}\cdashline{3-4}[0.5pt/3pt]\ArrRlWdthRestr
    	%
      \end{tabularx}
    \end{table}
    
    \end{document}

    Mit \ArrRlWdthSet{1pt}\cdashline{3-4}[1pt/0pt]\ArrRlWdthRestr können in Tabellen horizontale (Voll-)Linien zwischen bestimmten Zellen gezeichnet werden, wobei die Linienstärke/Liniendicke eingestellt werden kann. Analog dazu ergibt \ArrRlWdthSet{1pt}\cdashline{3-4}[0.5pt/3pt]\ArrRlWdthRestr eine horizontale Strichlinie zwischen bestimmten Zellen in der gewünschten Linienstärke/Liniendicke. Falls im ersten Argument ...\cdashline{1-b}... für b die Gesamtanzahl der Tabellenspalten eingesetzt wird, ist das Ergebnis identisch zu \hline.



    Grüße

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •