Seite 1 von 1

Erster Querverweis auf Gleichung unterstrichen

Verfasst: Di 26. Mär 2013, 21:51
von Mr_Nofreeze
Hallo zusammen,

ich habe ein hoffentlich kleines Anliegen. Ich schreibe derzeit an meiner Bachelorarbeit und habe hier die Vorgabe, dass das erste Vorkommen eines Querverweises im Text unterstrichen sein soll. Nun habe ich schon einige Stunden im Internet gesucht und bin auf die unten stehende Lösung gestoßen (über ein Internetforum). Leider ist hiermit nur der Fall der Abbildung sowie der Tabelle abgedeckt. Ich hab bei meinen Transferversuchen aber nicht geschafft die Gleichungensverweise genauso dargestellt zu bekommen. Kann mir hier jemand helfen? Grundsätzlich würde ich eqnarray bzw. align bevorzugen.

Vielen Dank schon mal!
Chris
\newif\ifMeinFormat
%\MeinFormattrue
\MeinFormatfalse

\makeatletter
\@ifdefinable\evtlfett{%
\ifMeinFormat
\let\evtlfett\@firstofone
\else
\let\evtlfett\underline
\fi
}%

\def\p@figure{\expandafter\p@@figure}%
\def\p@@figure#1{\@figmkdef{#1}}%
\DeclareRobustCommand\@figmkdef[1]{%
\@ifundefined{figmk#1}
{%
\global\@namedef{figmk#1}{}%
\evtlfett{Abbildung #1}%
}%
{Abbildung #1}%
}%

\def\p@table{\expandafter\p@@table}%
\def\p@@table#1{\@tablemkdef{#1}}%
\DeclareRobustCommand\@tablemkdef[1]{%
\@ifundefined{tblmk#1}
{%
\global\@namedef{tblmk#1}{}%
\evtlfett{Tabelle #1}%
}%
{Tabelle #1}%
}%
\makeatother
Minimalbeispiel:
\begin{document}
\section{test}
{\begingroup erster Verweis auf die Figur: \ref{fig} \endgroup}\\
zweiter Verweis auf die Figur: \ref{fig}\\
erster Verweis auf die Table: \ref{tab}\\
zweiter Verweis auf die Table: \ref{tab}

\begin{figure}
Irgend ne Figur
\caption{\label{fig}Text}
\end{figure}

\begin{table}
Irgend ne Table
\caption{\label{tab}Text}
\end{table}

\end{document}

Erster Querverweis auf Gleichung unterstrichen

Verfasst: Sa 6. Apr 2013, 00:44
von Mr_Nofreeze
Hallo,

da sich bisher noch nichts weiteres getan hat, hab ich nochmal ein Minimalbeispiel gebastelt. Dies müste 1:1 ausführbar sein. Mein Wunsch wäre, die Gleichung genauso referenzieren zu können, wie die Tabellen und die Grafiken. Vielleicht könnte mir hier jemand helfen.

Vielen Dank schon mal!
\documentclass[
    pagesize,
    DIV = calc,
    liststotoc,
    bibtotoc,
    idxtotoc]{scrreprt}
    
    \usepackage{amsmath}


\newif\ifMeinFormat
%\MeinFormattrue
\MeinFormatfalse

\makeatletter
\@ifdefinable\evtlfett{%
\ifMeinFormat
\let\evtlfett\@firstofone
\else
\let\evtlfett\underline
\fi
}%

\def\p@figure{\expandafter\p@@figure}%
\def\p@@figure#1{\@figmkdef{#1}}%
\DeclareRobustCommand\@figmkdef[1]{%
\@ifundefined{figmk#1}
{%
\global\@namedef{figmk#1}{}%
\evtlfett{Abbildung #1}%
}%
{Abbildung #1}%
}%

\def\p@table{\expandafter\p@@table}%
\def\p@@table#1{\@tablemkdef{#1}}%
\DeclareRobustCommand\@tablemkdef[1]{%
\@ifundefined{tblmk#1}
{%
\global\@namedef{tblmk#1}{}%
\evtlfett{Tabelle #1}%
}%
{Tabelle #1}%
}%

\makeatother

\begin{document}
\section{test}
{\begingroup erster Verweis auf die Figur: \ref{fig} \endgroup}\\
zweiter Verweis auf die Figur: \ref{fig}\\
erster Verweis auf die Table: \ref{tab}\\
zweiter Verweis auf die Table: \ref{tab}\\
erster Verweis auf die Gleichung: \ref{eqn:abc}\\
zweiter Verweis auf die Gleichung: \ref{eqn:abc}\\

\begin{figure}
Irgend ne Figur
\caption{\label{fig}Text}
\end{figure}

\begin{table}
Irgend ne Table
\caption{\label{tab}Text}
\end{table}

\begin{align}
a + b = c \label{eqn:abc}
\end{align}

\end{document}

Verfasst: Fr 19. Apr 2013, 13:59
von Hagbard Celine
Hallo Mr. Nofreeze,

ich habe mir jetzt nicht die Mühe gemacht, deine ursprüngliche Lösung durchzuarbeiten, habe aber eine recht simple gefunden:
   \usepackage{etoolbox}
    


\let\oldref\ref

\listgadd{\labelliste}{dummy-label}

\renewcommand{\ref}[1]
	{%
		\ifinlist{#1}{\labelliste}%
			{\oldref{#1}}%
			{%
				\underline{\oldref{#1}}%
				\listgadd{\labelliste}{#1}%
			}%
	}
Dabei wird der Befehl \ref so umdefiniert, dass jedes bereits referenzierte Label in eine interne Liste (aus dem Paket etoolbox) eingetragen wird. Der Befehl kann also anhand dieser Liste sehen, ob ein Label schon referenziert wurde und entscheiden, ob die Referenz unterstrichen werden soll oder nicht.
Das funktioniert für alle Label.
Dabei wird nicht automatisch "Abbildung" bzw. "Tabelle" geschrieben. Es gibt aber viele Pakete, die das können. Ich empfehle dir das Paket cleveref. Dort musst du dann nicht den Befehl \ref, sondern \cref entsprechend umdefinieren.

Viele Grüße,
Jonas