PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tabular-Umgebung, vertikale Striche enden beliebig irgendwo



floiii
22-01-2012, 18:38
Hey ihr,

ich beschäftige mich gerade mit meiner Bachelorarbeit und möchte der Übersichtlichkeithalber vertikale Striche in meine Tabelle einbauen. Schaut euch den angehängten Screenshot und schaut, wie es aussieht. Folgender Programmcode erzeugt die Tabelle:

\begin{table}[H]
\caption{Vor- und Nachteile eines Elektromagnets}
\label{tab:VglEmag}
\centering
\begin{tabular}[c]{ p{7cm} | p{7cm} }
\addlinespace
\toprule
\multicolumn{1}{c}{\large{+}} &
\multicolumn{1}{c}{\large{--}} \\
\midrule
\addlinespace
\addlinespace
Aufbau eines Magnetfeldes bei Bestromung, sozusagen auf \emph{Knopfdruck} & dauerhaftes Bestromen, um Mag\-net\-feld aufrecht zu erhalten \\
\addlinespace
\hdashline
\addlinespace
Sehr hohe Haftkr\"afte erreichbar & Magnetfeld nie komplett neutralisiert, immer Resthaltekraft (Remanenz) vorhanden \\
\addlinespace
\hdashline
\addlinespace
& evtl. eine schlechte Vertr\"aglichkeit mit dem Display \\
\addlinespace
\bottomrule
\end{tabular}
\end{table}

Stefan_K
22-01-2012, 18:46
Hallo Florian,

vertikale Linien vertragen sich schlecht mit dem von Dir verwendeten Paket booktabs. Der Autor empfiehlt, vertikale Linien in Tabellen generell zu vermeiden, und unterstützt sie daher auch nicht direkt. Vertikale Linien werden auch oft als störend empfunden, insbesondere beim zeilenorientierten Lesen.

Wenn es denn sein muss, kannst Du es durch \addlinespace nach dem ersten \hdashline verbessern.

Stefan

floiii
22-01-2012, 20:56
Hallo Florian,

vertikale Linien vertragen sich schlecht mit dem von Dir verwendeten Paket booktabs. Der Autor empfiehlt, vertikale Linien in Tabellen generell zu vermeiden, und unterstützt sie daher auch nicht direkt. Vertikale Linien werden auch oft als störend empfunden, insbesondere beim zeilenorientierten Lesen.

Wenn es denn sein muss, kannst Du es durch \addlinespace nach dem ersten \hdashline verbessern.

Stefan

Hi Stefan,

ich fügte nun ein \addlinespace nach dem ersten \hdashline ein und es änderte sich kaum etwas, siehe Screenshot.
Ich möchte eben die vertikale Linie bis nach oben haben, also bis toprule.

Generell bin ich auch für eine andere Variante offen, die ich vermutlich noch nicht kenne, um meine Vor- und Nachteile vernünftig tabellarisch darzustellen. An der Stelle bin ich für Hinweise sehr dankbar.

Viele Grüße,
Florian

Stefan_K
22-01-2012, 21:47
Hallo Florian,

Du meinst also bis ganz oben! Ich dachte, nur bis zur gestrichelten Linie, die ja überschnitten wurde, daher der Vorschlag.

Dann solltest Du diese \addlinespace herausnehmen, das ist ein booktabs-Feature, was an den vertikalen Linien von Standard-LaTeX vorbeigeht. Das betrifft eigentlich auch die rules mit ihren Abständen.

Wenn man wie hier, etwa oft wiederholt schreibt, deutet es schon auf eine nicht optimale Lösung hin. Statt der vielen \addlinespace könntest Du die Zeilen generell strecken, durch Redefinition von \arraystretch:


\renewcommand*{\arraystretch}{1.6}

Voreingestellt ist hier 1. Änderungen des Wertes werden auch von den vertikalen Linien berücksichtigt.

Stefan

Stefan_K
22-01-2012, 21:57
Hallo Florian,


Generell bin ich auch für eine andere Variante offen, die ich vermutlich noch nicht kenne, um meine Vor- und Nachteile vernünftig tabellarisch darzustellen. An der Stelle bin ich für Hinweise sehr dankbar.


hier sind Beispiele, wie man vertikale Strukturen bzw. voneinender Absetzen von Spalten auch darstellen kann, ohne vertikale Linien: Example tables with LaTeX (http://texblog.net/latex-beginners-guide/examples/chapter-5#multirow), ganz unten, Beispiele mit Code. Erklärenden Text gibt es hier: Creating Tables with LaTeX (http://www.packtpub.com/article/creating-tables-latex).

Stefan

floiii
23-01-2012, 15:06
hier sind Beispiele, wie man vertikale Strukturen bzw. voneinender Absetzen von Spalten auch darstellen kann, ohne vertikale Linien

Es gibt Momente, da könnte ich LaTeX verfluchen.
Danke dir erstmal für die beiden Links.

a)
die vertikalen Linien gefallen mir auch nicht erhöhen aber in diesem Fall die Übersicht deutlich, wie ich finde. Ohne \addlinespace funktioniert das super und gefällt mir besser und ist einfacher. ;) Allerdings zieht mir TeXShop die Linie noch immer nicht bis hoch -> Screenshot. :mad:

b)
eine Variante wäre eine unterbrochene Mittellinie, also \cmidrule{1-1}\cmidrule{2-2}. Doch wie man auch hier im Screenshot sieht macht LaTeX nicht was ich will und ich weiß nicht warum. :mad:

In der Präambel steht nun:
\renewcommand*{\arraystretch}{1.6}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\newcommand{\normal}[1]{\multicolumn{1}{l}{#1}}

Freue mich nochmals auf Hilfe. :)
Gruß
Florian

hakaze
23-01-2012, 15:43
Zunächst würde ich nicht den TeXshop verfluchen... der ist nur dein Editor ;)

Bei den cmidrules gibt es noch den optionalen Trimming-Parameter in "normalen" (runden) Klammern. Der gibt die Seite an, an der etwas von der Linie abgeschnitten wird. Ich habe mal ein Minimalbeispiel gebastelt (inkl. tabularx mit linksbündigen Umbruch in den Zellen, allerdings ohne hdashline (k.A. wo du das herbekommst)):
\documentclass[ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{booktabs,tabularx,ragged2e}

\newcolumntype{Y}{>{\raggedright\arraybackslash}X}

\begin{document}

\begin{table}[H]
\caption{Vor- und Nachteile eines Elektromagnets}
\label{tab:VglEmag}
\centering
\begin{tabularx}{\linewidth}{YY}
\toprule
\multicolumn{1}{c}{\large{+}} &
\multicolumn{1}{c}{\large{--}} \\
\cmidrule(r){1-1}\cmidrule(l){2-2}
Aufbau eines Magnetfeldes bei Bestromung, sozusagen auf \emph{Knopfdruck} & dauerhaftes Bestromen, um Mag\-net\-feld aufrecht zu erhalten \\
\addlinespace
Sehr hohe Haftkräfte erreichbar & Magnetfeld nie komplett neutralisiert, immer Resthaltekraft (Remanenz) vorhanden \\
\addlinespace
& evtl. eine schlechte Verträglichkeit mit dem Display \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}Ich habe mir auch die Freiheit genommen, die vielen addlinespace-Befehle auszudünnen (u.a., warum vor toprule?).

Ich stimme auch Stefan zu: vertikale Linien sind hier völlig vermeidbar (und sollten es immer sein ;)). In deinem anderen Screenshot sind sie auch nicht erforderlich, da die Aufzählungsstriche ja bereits die notwendige optische Trennung der Spalten erzeugen.

floiii
23-01-2012, 16:41
Diesen Kommentar wollte ich nun aber nicht hören! :p

Ich kopierte nun also deinen Vorschlag an die passende Stelle und erhalte nun eine Fehlermeldung, siehe Screenshot.

Zu vertikalen Linien in Tbb.:
Ich stimme euch beiden absolut zu, dass man sie a) nicht braucht, weil sie unschön sind und ich sie b) in dem Beispiel von eben nicht unbedingt brauche.
Aber schaut euch mal den zweiten Screenshot (eben die "Vor- und Nachteile von Elektromagneten" ohne vertikale Line) an. Das ist doch alles reichlich unübersichtlich, oder?!?! :(

edit: Fehlermeldung konnte ich lösen. Mein Editor mag keine Umlaute und stelle beispielsweise ein "ä" als " \"a " dar

hakaze
23-01-2012, 16:47
Hast du auch die Pakete (v.a. tabularx) und den newcolumn-Befehl in den Vorspann kopiert?

Zum Screenshot: ja es ist unübersichtlich, aber das kommt v.a. durch die durchgehenden Linien. Mit zwischen den Spalten unterbrochenen Linien, a.k.a. cmidlines ;), sieht es IHMO überhaupt nicht unübersichtlich aus.

EDIT: welche Version von Texshop, OS und Latex-Distribution hast du denn? Eigentlich sollte das direkte Eingeben von Umlaute auf moderneren Systemen kein Problem mehr sein (lies: bei mir läuft es reibungslos). Eventuell kannst du ja auch mal deine Präambel posten.

floiii
23-01-2012, 17:18
Hast du auch die Pakete (v.a. tabularx) und den newcolumn-Befehl in den Vorspann kopiert?
Hat sich durch das Ersetzen der Umlaute in diese etwas "komische Form" erledigt.


Zum Screenshot: ja es ist unübersichtlich, aber das kommt v.a. durch die durchgehenden Linien. Mit zwischen den Spalten unterbrochenen Linien, a.k.a. cmidlines ;), sieht es IHMO überhaupt nicht unübersichtlich aus.
Ich glaube Du hast Recht. Nun habe ich alle Tbb. so geändert und irgendwie finde ich es doch ziemlich gut. Danke! :D


EDIT: welche Version von Texshop, OS und Latex-Distribution hast du denn? Eigentlich sollte das direkte Eingeben von Umlaute auf moderneren Systemen kein Problem mehr sein (lies: bei mir läuft es reibungslos). Eventuell kannst du ja auch mal deine Präambel posten.
OS X Lion
TeXShop Version 2.43 (2.43)
Was Du genau mit Latex-Distribution meinst weiß ich nicht. :confused:


\documentclass[a4paper,12pt,headsepline,parskip,]{scrartcl}
\usepackage{lmodern}
\usepackage[pdftex]{graphicx}
\usepackage{epstopdf}
\let\mymarginpar\marginpar
\renewcommand{\marginpar}[1]{\mymarginpar[\raggedleft\tiny #1]{\raggedright\tiny #1}}
\usepackage[activate]{pdfcprot}
\usepackage[applemac]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage{booktabs,tabularx,ragged2e}
\usepackage{multirow}
\usepackage[font=footnotesize, singlelinecheck=false, format=plain, justification=centering, indention=0cm]{caption}
\usepackage{tikz, pgfplots}
\usetikzlibrary{plotmarks}
\usetikzlibrary{calc}
\usepackage{float}
%\usepackage{mathptmx}
\usepackage{stmaryrd}
\usepackage{amsmath, nicefrac, amsfonts}
\usepackage{pdfpages}
%%
%% \usepackage[scaled=0.92]{helvet}
%% \renewcommand\familydefault{phv}
%%
\usepackage[T1]{fontenc}
\usepackage{geometry}
\geometry{left=4cm,textwidth=15cm,top=3cm,textheig ht=23cm}
\usepackage{setspace}
\onehalfspacing
\usepackage{eurosym}
\pagestyle{headings}
\usepackage{arydshln} % F\"ur gestrichelte Linien in Tabellen
\usepackage{enumerate} %f F\"ur numerierte Aufz\"ahlungen
\usepackage{enumitem} % um Zeilenabst\"ande in ENUMERATE zu ver\"andern
\usepackage{blindtext} % http://www.golatex.de/wiki/index.php?title=description
\usepackage{verbatim} % zum Auskommentieren mehrerer Zeilen \"uber \begin{comment} \end{comment}
%\usepackage{nomencl} % zum Laden des Symbolverzeichnisses
%\makenomenclature % zum Erstellen des Symbolverzeichnisses
\renewcommand*{\arraystretch}{1.5}

\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\newcommand{\normal}[1]{\multicolumn{1}{l}{#1}}
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}

hakaze
23-01-2012, 18:12
AFAIK nutzt die aktuelle Texshop (die du auch hast) Unicode (UTF-8) als Standardtextkodierung. Nachzuschauen unter Einstellungen -> Quelltext -> Kodierung

Wenn das bei dir auch so ist, solltest du deine Präambel anpassen:
% ersetze
% \usepackage[applemac]{inputenc}
% durch
\usepackage[utf8]{inputenc}
% dann kannst du auch Umlaute oder ß direkt eingebenEine Latex-Distribution ist z.B. Texlive (du solltest die aktuelle 2011er Version haben), tetex oder miktex.

floiii
24-01-2012, 13:51
AFAIK nutzt die aktuelle Texshop (die du auch hast) Unicode (UTF-8) als Standardtextkodierung. Nachzuschauen unter Einstellungen -> Quelltext -> Kodierung

Wenn das bei dir auch so ist, solltest du deine Präambel anpassen:
% ersetze
% \usepackage[applemac]{inputenc}
% durch
\usepackage[utf8]{inputenc}
% dann kannst du auch Umlaute oder ß direkt eingebenEine Latex-Distribution ist z.B. Texlive (du solltest die aktuelle 2011er Version haben), tetex oder miktex.

Vielen Dank für deinen Hinweis. Ich habe bereits davon gelesen und probierte es soeben nochmals. Aber irgendwie erhalte ich dann in der *.bbl eine Fehlermeldung und da mein Abgabetermin näher rückt und ich kein Problem mit der etwas schrägen Darstellung habe werde ich es in Zukunft berücksichtigen und nun damit leben. Hab' mich dran gewöhnt... Und für die restliche noch verbleibende Woche ist es okay. ;)
Viele Grüße,
Florian