Anzeige:
Ergebnis 1 bis 7 von 7

Thema: caption in verschiedenen Umgebungen

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.08.2007
    Beiträge
    28

    caption in verschiedenen Umgebungen

    Hallo,

    ich verwende in meiner Arbeit mehrer Umgebungen für Tabellen sowohl gleitende als auch nichtgleitende und daher auch caption und captionof{table}

    wollte mir nun ein einheitliches layout für alle tabellenüberschriften mit captionsetup erstellen, allerdings wirken sich nur einige sachen auf alle überschriften aus z.B. tablename ander wie der abstand von der tabelle und der einzug der ersten zeile werden nur bei captionof{table} geändert. in den umgebungen table, longtable und ltxtable erhalte ich ein falsches ergebniss, allerdings hab ich keine ahnung warum das so ist. richtig ist nur captionof in der minipage umgebung.

    wäre super wenn mir da jemand helfe könnte. Danke schon mal im vorraus.

    Code:
    \documentclass[
    12pt,
    bigheadings,
    ngerman,
    a4paper,
    pagesize,
    oneside,
    onecolumn,
    openany,
    titlepage,
    parskip,
    headsepline,
    footsepline,
    fleqn,
    ]{scrbook}
    
    \makeatletter
    \setlength{\@fptop}{0pt}
    \makeatother
    
    \usepackage{calc}
    \usepackage[ngerman]{babel}
    \usepackage{xcolor}
    \usepackage{graphicx}
    \usepackage{epstopdf}
    \usepackage[reqno,fleqn]{amsmath}
    \usepackage{marginnote}
    \usepackage{relsize}
    \usepackage{ragged2e}
    \usepackage[T1]{fontenc} 
    \usepackage{textcomp}
    \usepackage{lmodern}
    \usepackage[fixamsmath,disallowspaces]{mathtools}
    \usepackage{fixmath}
    \usepackage[all,warning]{onlyamsmath}
    \usepackage{icomma}
    \usepackage[nice]{nicefrac}
    \usepackage{booktabs}
    \usepackage{multirow}
    \usepackage{multicol}
    \usepackage[normalem]{ulem}
    \usepackage{soul}
    \usepackage{url} 
    \usepackage[bottom,stable,perpage,ragged,multiple]{footmisc}
    \usepackage[ngerman]{varioref} 
    \usepackage{enumitem}
    \usepackage[babel,german=quotes,english=british,french=guillemets]{csquotes}
    \usepackage[square,comma,numbers,sort,sort&compress]{natbib}
    \bibliographystyle{bib/bst/dinat}
    \usepackage[expansion=true,protrusion=true]{microtype}
    \usepackage[raiselinks=true,breaklinks,backref=page,pagebackref=true,verbose,hyperindex=true,linktocpage=true,bookmarks=true,bookmarksopenlevel=0,bookmarksnumbered=true,bookmarkstype=toc,pageanchor=true]{hyperref}
    \usepackage[figure]{hypcap}
    \usepackage{pdfpages} 
    \usepackage{tabularx}
    \usepackage{ltxtable}
    \usepackage{longtable}
    \usepackage{setspace}
    \usepackage{float}
    \usepackage[section]{placeins}
    \usepackage{subfig}
    \usepackage{wrapfig}
    \usepackage{makeidx}
    \usepackage[intoc]{nomencl}
    \usepackage{acronym}
    \usepackage{units}
    \usepackage{scrpage2}
    \usepackage{caption}
    \captionsetup{
    	format = plain,					
    	indention = .5cm,				
    	justification = justified,		
    	singlelinecheck = false,		
    	font = {rm},					
    	labelfont = {normalsize,bf},	
    	textfont = {small},			
    	tableposition = top,
    	figureposition = bottom,
    	skip = 0.3cm,
    	figurename = Abbildung,
    	tablename = Tabelle,
    }
    \usepackage{hhline}
    
    
    \newcommand{\wcaption}[3]{
       \begin{minipage}{#1}
       \caption[#2]{#3}
       \end{minipage}
    }	
    
    \newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
    \newcolumntype{C}{>{\PreserveBackslash\RaggedRight\hspace{0pt}}X}
    
    \begin{document}
    
    \begin{minipage}{0.63\textwidth}
    \captionof{table}[Eintrag im Verzeichnis]{Minipage - captionof\{table\} - tabularX --- so richtig:  DDies soll eine zweizeilige Tabellenüberschrift sein.}
    \label{tab:tab1}
    \begin{tabularx}{\textwidth}{CCC} \hline\hline
    Parameter & Grö"se & Einheit \\\hline
    $\alpha $	&	 0,44096	 &	[1] \\
    $\beta $	&	 0,04101	 & [1] \\
    $\gamma $	&	 0,60597	 & [1] \\
    $\delta $	&	 -0,00874	 & [1] \\
    $\epsilon $	&	 0,02320	 & [1] \\
    $\vartheta $&	 0,31350	 & [1] \\\hline \hline
    \end{tabularx}
    \end{minipage}
    
    
    \begin{minipage}{0.63\textwidth}
    \captionof{table}[Eintrag im Verzeichnis]{Minipage - captionof\{table\} - tabular --- so richtig: Dies soll eine zweizeilige Tabellenüberschrift sein.}
    \label{tab:tab2}
    \begin{tabular}{ccc} \hline\hline
    Parameter & Grö"se & Einheit \\\hline
    $\alpha $	&	 0,44096	 &	[1] \\
    $\beta $	&	 0,04101	 & [1] \\
    $\gamma $	&	 0,60597	 & [1] \\
    $\delta $	&	 -0,00874	 & [1] \\
    $\epsilon $	&	 0,02320	 & [1] \\
    $\vartheta $&	 0,31350	 & [1] \\\hline \hline
    \end{tabular}
    \end{minipage}
    
    \begin{table}
    \caption[Eintrag im Verzeichnis]{table - caption - tabular --- so falsch: Dies soll eine zweizeilige Tabellenüberschrift sein.}
    \label{tab:tab3}
    \begin{tabular}{ccc} \hline\hline
    Parameter & Grö"se & Einheit \\\hline
    $\alpha $	&	 0,44096	 &	[1] \\
    $\beta $	&	 0,04101	 & [1] \\
    $\gamma $	&	 0,60597	 & [1] \\
    $\delta $	&	 -0,00874	 & [1] \\
    $\epsilon $	&	 0,02320	 & [1] \\
    $\vartheta $&	 0,31350	 & [1] \\\hline \hline
    \end{tabular}
    \end{table}
    
    
    \LTXtable{1.1\textwidth}{Linienparameter}
    
    
    \begin{longtable}{ccccccc}
    \caption[Linienparameter]{longtable - caption --- so falsch: Dies soll eine zweizeilige Tabellenüberschrift sein.}
    \label{tab:tab4}	\\\hline\hline
    Parameter & Grö"se & Einheit \\\hline
    $\alpha $	&	 0,44096	 &	[1] \\
    $\beta $	&	 0,04101	 & [1] \\
    $\gamma $	&	 0,60597	 & [1] \\
    $\delta $	&	 -0,00874	 & [1] \\
    $\epsilon $	&	 0,02320	 & [1] \\
    $\vartheta $&	 0,31350	 & [1] \\\hline \hline
    \end{longtable}							
    
    \end{document}
    Code:
    \begin{longtable}{CCC}
    \caption[Linienparameter]{LTXtable - longtable - caption --- so falsch: Dies soll eine zweizeilige Tabellenüberschrift sein.}
    \label{tab:tab5}	\\\hline\hline
    Parameter & Grö"se & Einheit \\\hline
    $\alpha $	&	 0,44096	 &	[1] \\
    $\beta $	&	 0,04101	 & [1] \\
    $\gamma $	&	 0,60597	 & [1] \\
    $\delta $	&	 -0,00874	 & [1] \\
    $\epsilon $	&	 0,02320	 & [1] \\
    $\vartheta $&	 0,31350	 & [1] \\\hline \hline
    \end{longtable}

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Ich habe mal die Preamble auf
    Code:
    \documentclass{scrbook}
    \usepackage[ngerman]{babel}
    \usepackage{ltxtable}
    \usepackage{ragged2e}
    \usepackage{caption}
    \captionsetup{
    	format = plain,
    	indention = .5cm,
    	justification = justified,
    	singlelinecheck = false,
    	font = {rm},
    	labelfont = {normalsize,bf},
    	textfont = {small},
    	tableposition = top,
    	figureposition = bottom,
    	skip = 0.3cm,
    	figurename = Abbildung,
    	tablename = Tabelle
    }
    
    \newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
    \newcolumntype{C}{>{\PreserveBackslash\RaggedRight\hspace{0pt}}X}
    gekürzt, damit sieht es für mich wie erwartet aus.

    Mir ist auch nicht ganz klar, wozu die Optionen "figurename = Abbildung, tablename = Tabelle" gut sind, denn dies sind sowieso die Standardnamen, die das Babel-Paket vorgibt. Wo stimmt bei dir die Benamung nicht?

    Weiterhin ist mir nicht ganz klar, was du mit "zweizeilig" meinst. Eine \caption wird immer bis zur Breite der Umgebung gesetzt, innerhalb einer Minipage mit der Breite 0.63\textwidth ist also auch die \caption nur maximal so breit, und innerhalb einer normalen "table" eben bis zu \textwidth, solange man keine feste Breite der \caption mit der Option "width=xxx" angibt.

    Willst du die captions generell weniger breit haben, so wie in deinen Minipages? Soll die Breite der caption immer an die Breite der Tabelle angepasst werden?

    Liebe Grüße,
    Axel

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.08.2007
    Beiträge
    28
    Hallo,

    hab mein problem wohl nicht richtig beschrieben. Also der Umbruch der Tabellenüberschrift ist schon richtig. Das ist einfach nur ein text damit ich sehe wie der einzug der zweiten Zeile aussieht. Die option "figurename" und "tablename" hab ich sonst auf "Abb." und "Tab.", das nur jetzt so damit die überschrift noch etwas länger ist. also gar nicth beachten.

    Mein Problem ist der Abstand der Überschriften von der Tabelle sowie der einzug der ersten zeile. bei den Tabellen in der Minipage-Umgebung mit captionof und tabular bzw tabularX habe ich einen abstand sowie keinen einzug der ersten zeile und einen einzug der zweiten zeile. (format = plain; skip = 0.3cm; indention = .5cm)
    bei table - caption - tabular ist der abstand zur tabelle nicht da, dh. die option skip greift hier nicht. format und indention sind richtig. das selbe ist es bei longtable - caption.
    bei LTXtable gibt es sowohl einen einzug der ersten zeile, trozt format=plain, und keinen abstand zur tabelle.

    was ich jetzt eben nicth versteh ist, warum einige optionen für wenige umgebungne gelten, manche gar nicht und andere wieder für alle.

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von LivToole Beitrag anzeigen
    Mein Problem ist der Abstand der Überschriften von der Tabelle
    Bei KOMA-Script regelt den KOMA-Script und nicht das caption-Paket die Position des Abstandes. (Siehe auch caption-Doku, Abschnitt über KOMA-Script.) Also die Dokumentenoption "tablecaptionabove" hinzufügen, dann sollte es für Tabellenüberschriften stimmen.

    bei table - caption - tabular ist der abstand zur tabelle nicht da, dh. die option skip greift hier nicht.
    Die Option "skip" schon, aber nicht die Optionen "figureposition" und "tableposition".

    bei LTXtable gibt es sowohl einen einzug der ersten zeile, trozt format=plain, und keinen abstand zur tabelle.
    Den Einzug der ersten Zeile habe ich hier auch. Der hängt vermutlich damit zusammen, daß die Tabelle breiter als die Seite ist, für die Breite der \caption aber nur die Seitenbreite genommen wird und LTXtable diese dann letztendlich zentriert. Ich werde mir das am Wochenende mal anschauen.

    was ich jetzt eben nicth versteh ist, warum einige optionen für wenige umgebungne gelten, manche gar nicht und andere wieder für alle.
    Das Problem ist, daß sehr viele Dokumentenklassen und Pakete eigenen Code für \caption bereitstellen. Hinter \caption steckt bei KOMA-Script anderer Code als wenn man eine andere Dokumentenklasse verwendet. Und das longtable-Paket definiert auch \caption um, innerhalb von longtables wird wiederum ganz anderer Code ausgeführt, auch wenn der Befehl gleich heißt. Usw. Es gibt halt nunmal (leider) nicht eine einzige Schnittstelle bzgl. \caption, die alle Dokumentenklassen und Pakete verwenden.
    Geändert von sommerfee (02-06-2008 um 09:09 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    18.08.2007
    Beiträge
    28
    Also die Dokumentenoption "tablecaptionabove" hinzufügen, dann sollte es für Tabellenüberschriften stimmen
    klappt für die longtable

    Den Einzug der ersten Zeile habe ich hier auch. Der hängt vermutlich damit zusammen, daß die Tabelle breiter als die Seite ist, für die Breite der \caption aber nur die Seitenbreite genommen wird und LTXtable diese dann letztendlich zentriert. Ich werde mir das am Wochenende mal anschauen.
    da hast du recht, das hängt damit zusammen das die tabelle breite ist als die seite und dann zentriert er das auf die breite der tabelle mit der textbreite als zeilenlänge. ich hab das nun so gelöst
    Code:
    \setlength\LTleft\parindent
    \setlength\LTright\fill
    das hat auch den vorteil das die longtable nicht mehr zentriert wird.

    also besten dank für die hilfe.

    hab da noch zwei zusatzfrage. undzwar gibts ne möglichkeit die breite der tabellen auszelesen um sie dann bei tabular die überschriften auf die selbe breite zu setzen oder muss man das mit der hand machen?
    und normalerweise würde ich das mit einer minipage umgebung machen, also quasi so
    Code:
    \begin{longtable}{cccc}
    \begin{minipage}{.5\textwidth}
    \caption{text}
    \end{minipage}
    ...
    ...
    \end{longtable}
    allerdings klappt das nicht.
    Fehlermeldung
    ! Misplaced \noalign.
    \caption ->\noalign

  6. #6
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Das floatrow-Paket bietet Möglichkeiten, die Breite der caption automatisiert an den Inhalt anzupassen, auch für longtables.

    Ansonsten kann man die Breite auch individuell + manuell setzen, mit \captionsetup{width=...}, also z.B.:

    Code:
    \begin{longtable}{cccc}
    \captionsetup{width=.5\textwidth}
    \caption{text}\\
    ...
    \end{longtable}
    (In longtables geht dies allerdings erst seit der Version 3.1 des caption-Paketes.)
    Geändert von sommerfee (02-06-2008 um 12:45 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    18.08.2007
    Beiträge
    28
    ok, da werde ich dann wohl etwas rumprobieren müssen, da das bei longtable noch nicht gut aussieht.

    aber das hilft mir glaube ich schon viel weiter. danke!

Lesezeichen

Berechtigungen

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