PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Referenz anpassen



Bilbo89
11-04-2012, 07:40
Guten Morgen,

ich habe ein kleines Problem. Ich würde gerne im Text auf meine Abbildungen und Tabellen referenzieren, damit ich nicht ständig die Nummerierung kontrollieren muss.

Ich bekomme das auch schon soweit mit dem \ref{}-Befehl hin.


\documentclass[pdftex,
12p,
a4paper,
final,
notitlepage,pointlessnumbers,
toc=graduated,
bibtotoc, liststotoc,
listof=nochaptergap
]
{scrreprt}

\usepackage{remreset}
\makeatletter
\renewcommand{\l@figure}{\@dottedtocline{1}{0.5em} {3.5em}}
\renewcommand{\l@table}{\@dottedtocline{1}{0.5em}{ 3.5em}}
\renewcommand \thefigure{Abb. \@arabic\c@figure}
\renewcommand \thetable{Tab. \@arabic\c@table}
\renewcommand*{\figureformat}{\thefigure}
\renewcommand*{\tableformat}{\thetable}
\renewcommand*{\captionformat}{: }
\makeatother

\begin{document}
\listoftables
\vspace{5cm}
Referenz: \ref{tab:Tabelle1}

\begin{table}[ht]
% | Serviceportfolio | Servicekatalog
\begin{tabular}{|p{25mm}|p{52.5mm}|p{52.5mm}|}
\hline
\textbf{Spalte1} & \textbf{Spalte2} & \textbf{Spalte3} \\
\hline
Inhalt & Inhalt & Inhalt \\
\hline
\end{tabular}
\caption{Tabelle 1}
\label{tab:Tabelle1}
\end{table}

Referenz: \ref{tab:Tabelle2}

\begin{table}[ht]
% | Serviceportfolio | Servicekatalog
\begin{tabular}{|p{25mm}|p{52.5mm}|p{52.5mm}|}
\hline
\textbf{Spalte1} & \textbf{Spalte2} & \textbf{Spalte3} \\
\hline
Inhalt & Inhalt & Inhalt \\
\hline
\end{tabular}
\caption{Tabelle 2}
\label{tab:Tabelle2}
\end{table}
\end{document}

Die List of Tables und Caption passen schon soweit und sollten sich auch nicht ändern. Nur die Referenz hätte ich gerne anders.

Es wird wie bei der List of Tables und dem Caption nur "Tab. 1" bzw. "Tab. 2" ausgegeben. Ich möchte aber, dass bei der Referenz "Tabelle 1" bzw. "Tabelle 2" ausgegeben wird. Ist das irgendwie möglich?

Grüße Bilbo

hakaze
11-04-2012, 08:55
Du hast doch schon alles, was du brauchst. Es sind lediglich zwei Zeilen zu ändern:
% Anpassung des Einzugs im Verzeichnis
\renewcommand{\l@table}{\@dottedtocline{1}{0.5em}{ 4.5em}}
% "Tabelle" als Wort ausschreiben
\renewcommand \thetable{Tabelle \@arabic\c@table}

u_fischer
11-04-2012, 13:28
Der Standard \label/\ref-Mechanismus benutzt \thetable. Du kannst dir aber mit zref einen neuen \ref-Befehl definieren.

Ich würde aber nicht das Tab. in \thetable speichern, sondern eher Tabellenverzeichnis und \caption getrennt anpassen. Dann zerschlägt es dir nicht die Tabellenunterschriften, wenn du später mal doch das Verzeichnis anders formatieren willst.


\documentclass{scrreprt}
\usepackage{tocloft}
\usepackage[user]{zref}
\makeatletter
\renewcommand \thetable{\arabic{table}}

%ref
\zref@newprop{tabtext}{Tabelle \arabic{table}}
\zref@addprop{main}{tabtext}

%toc
\renewcommand{\cfttabpresnum}{Tab.\ }
\newlength{\mylenf}
\settowidth{\mylenf}{\cfttabpresnum}
\setlength{\cfttabnumwidth}{\dimexpr\mylenf+1.5em}

%caption
\renewcommand*{\tableformat}{Tab. \thetable}
\renewcommand*{\captionformat}{: }
\makeatother

\begin{document}
\listoftables

\begin{table}[ht]
blub
\caption{Tabelle 1}
\zlabel{tab:Tabelle1}
\end{table}

Referenz: \zref{tab:Tabelle1}, \zref[tabtext]{tab:Tabelle1}
\end{document}

Bilbo89
11-04-2012, 16:11
Danke erstmal für eure schnelle Antworten.

@hakaze: Das hab ich natürlich auch schon ausprobiert, doch ich möchte ja im Tabellenverzeichnis und im Caption "Tab." stehen haben, aber im Text bei der Referenz soll "Abbildung" stehen.

@u_fischer: Das funktioniert soweit. Genau so hab ich es mir vorgestellt. Nur leider wird meine komplette Formatierung von allen Verzeichnissen geändert wenn ich das tocloft package verwende. Gibt es denn da keine andere Möglichkeit? Hab ehrlich gesagt keine Lust die Formatierung noch einmal neu zu machen.

Grüße Bilbo

u_fischer
11-04-2012, 17:48
Gibt es denn da keine andere Möglichkeit?

Nun natürlich. Du kannst ja wie gehabt \thetable umdefinieren.

Bilbo89
12-04-2012, 08:56
Nun natürlich. Du kannst ja wie gehabt \thetable umdefinieren.
und wie definiere ich thetable um?

Wenn ich \renewcommand \thetable{Tabelle \@arabic\c@table} schreibe wird zwar die Referenz richtig angezeigt, aber ich habe dann im Tabellenverzeichnis auch Tabelle (also ausgeschrieben) stehen. Ich möchte aber nur im Text, also bei der Referenz, Tabelle ausgeschrieben und im Tabellenverzeichnis und im Caption soll die Abkürzung Tab. stehen.

Grüße Bilbo

u_fischer
12-04-2012, 09:52
Wenn ich \renewcommand \thetable{Tabelle \@arabic\c@table} schreibe wird zwar die Referenz richtig angezeigt, aber ich habe dann im Tabellenverzeichnis auch Tabelle (also ausgeschrieben) stehen.

Eben. Deswegen muss du wie gehabt (wie in deinen Ursprungsbeispiel) \renewcommand \thetable{Tab. \@arabic\c@table} benutzen.

Für die Referenz benutzt du dann die \zref-Befehle aus meinem Beispiel.

Bilbo89
12-04-2012, 14:18
okay ich hab das gestern schon getestet, hab aber meinen Fehler gefunden. Ich werde es heute abend nach der Arbeit nochmal testen.
Ich hab die Referenz mit \ref{} und nicht mit \zref{} gemacht. Das kann ja nicht funktionieren :o

Ich melde mich sobald es funktioniert. Aber schonmal danke Ulrike :)

Grüße Bilbo

Bilbo89
16-04-2012, 10:07
Ich habe es nun endlich hinbekommen.

Danke nochmal für deine Hilfe Ulrike.

mit \zref{} funktioniert es :)

Das Thema kann dann auch geschlossen werden.

Grüße Bilbo