Referenzieren von "Gleichung (xxx)"

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Referenzieren von "Gleichung (xxx)"

von Dimitri » Do 23. Mai 2013, 12:33

Ahh, OK, Danke. Von dem befehl habe ich unten bei crefrange garnix gelesen.
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}
\crefname{Bed}{Bedingung}{Bedingungen}
\crefformat{Bed}{#2Bedingung~(#1)#3}
\crefrangeformat{Bed}{#3Bedingungen~(#1)#4 und~#5(#2)#6}


\begin{document}

\begin{align}
c=d\label[Bed]{eq:test1}\\
a=b\label[Bed]{eq:test2}
\end{align}
hallo \crefrange{eq:test1}{eq:test2}
\end{document}
Jetzt funzts aber.

von u_fischer » Do 23. Mai 2013, 11:30

Hallo, ich habe Mir heute das "\crefrangeformat" gebastelt. Dabei hätte ich gerne dass "Bemerkungen (1) und (2 mit Klammer referenziert wird, aber das geschieht nicht...
Weil du gar kein Range benutzt. Dafür gibt es den \crefrange{eq1}{eq5}-Befehl.

von Besserwisser » Do 23. Mai 2013, 11:08

Nein, das war von Dir keine Rückfrage, sondern eine weitere oder eine Ergänzungsfrage. Oder bist Du etwa ein potentieller Beantworter? Wenn Du schon so von kostenlos verfügbaren Informationen schwärmst, solltest Du sie auch nutzen! Warum schaust Du Dir nicht endlich die Erklärung zum Status an?

von Dimitri » Do 23. Mai 2013, 09:38

Warum?

Ich habe doch "Rückfrage" eingegeben und das von Mir war doch ne Rückfrage...

von Besserwisser » Do 23. Mai 2013, 09:31

Vor allem verwendest Du noch immer den falschen Status! Warum machst Du das? (Mit dieser Frage stimmt der Status jetzt wieder, ohne dass ich ihn ändern muss).

von Dimitri » Mi 22. Mai 2013, 21:43

\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}
\crefname{Bed}{Bedingung}{Bedingungen}
\crefformat{Bed}{#2Bedingung~(#1)#3}
\crefrangeformat{Bed}{Bedingung~(#3(#1)#4) und~(#5(#2)#6)}

\makeatletter
\renewcommand*{\eqref}{%
  \@ifstar {\@@eqref}{\@eqref}%
}
\newcommand*{\@@eqref}[1]{%
  \textup{\tagform@{\ref*{#1}}}%
}
\newcommand*{\@eqref}[1]{%
  \hyperref[#1]{\@@eqref{#1}}%
}
\newcommand*{\autoeqref}[1]{%
  \hyperref[#1]{\equationautorefname\space\@@eqref{#1}}%
}
\makeatother

\begin{document}

\begin{align}
c=d\label[Bed]{eq:test1}\\
a=b\label[Bed]{eq:test2}
\end{align}
hallo \cref{eq:test1,eq:test2} --> Bemerkungen (1) und (2)

\end{document}
Hallo, ich habe Mir heute das "\crefrangeformat" gebastelt. Dabei hätte ich gerne dass "Bemerkungen (1) und (2 mit Klammer referenziert wird, aber das geschieht nicht...
Ich sitze nun schon ne ganze Weile dranrum, aber ich versteh einfach nicht was ich ändern soll. :?
Kann Mir da jemand weiterhelfen.

von Dimitri » Mo 20. Mai 2013, 09:22

Danke! :-)

von Epllus » Mo 20. Mai 2013, 08:44

Dimitri hat geschrieben:Dann kann ich aber nicht mehr auf Textstellen verweisen oder sehe ich das falsch???
Du siehst was falsch:
\begin{itemize} 
\item[•]hallo\label{ff} 
\end{itemize} 
auf was möchtest du verweisen? Es hat gar keine Nummer.
Mit
\begin{enumerate} 
\item hallo\label{ff} 
\end{enumerate} 
funktioniert es einwandfrei.

Grüße
Epllus

PS: @ Dimitri: Bitte den Status anpassen.

von Dimitri » So 19. Mai 2013, 21:12

Dann kann ich aber nicht mehr auf Textstellen verweisen oder sehe ich das falsch???
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{hyperref}

\makeatletter
\renewcommand*{\eqref}{%
  \@ifstar {\@@eqref}{\@eqref}%
}
\newcommand*{\@@eqref}[1]{%
  \textup{\tagform@{\ref*{#1}}}%
}
\newcommand*{\@eqref}[1]{%
  \hyperref[#1]{\@@eqref{#1}}%
}
\newcommand*{\autoeqref}[1]{%
  \hyperref[#1]{\equationautorefname\space\@@eqref{#1}}%
}
\makeatother

\begin{document}

\begin{align}
\label{eq:test}
  a=b
\end{align}
\begin{itemize}
\item[•]hallo\label{ff}
\end{itemize}
\autoref{eq:test} vs. \autoeqref{eq:test} vs. \eqref{eq:test}
vs. \eqref*{eq:test} vs. \ref{eq:test} vs. \ref*{eq:test}.\\
das geht so nicht\ref{ff}
\end{document}

von Noch so einer » Sa 18. Mai 2013, 12:53

\equationrefname erwartet bei der Verwendung in hyperref kein Argument. Konkret wird es beispielsweise so verwendet:
\def\HyPsd@@autorefname#1.#2\@nil{%
  \ltx@IfUndefined{#1autorefname}{%
    \ltx@IfUndefined{#1name}{%
    }{%
      \csname#1name\endcsname\space
    }%
  }{%
    \csname#1autorefname\endcsname\space
  }%
}
Wenn Du es nun als Befehl mit Argument neu definierst, wird an der Stelle \space zum Argument. Es würde aber auch nichts nützen, wenn Du es jetzt einfach mit zwei Argumenten definierst, weil das dann wiederum nicht zur Verwendung von \HyPsd@@autorefname in \HyPdf@autorefname passt.

Erschwerend kommt hinzu, dass Deine Definition \begin{document} nicht überlebt, weil Du entweder babel oder die Zusammenarbeit von hyperref mit babel verstanden hast.

Die Frage ist also eigentlich eher: Wie kommst Du darauf, dass das funktionieren sollte? Es kann schlicht gar nicht funktionieren! Du solltest mit der Quelle der Informationen für diesen Code daher eher kritisch umgehen..

Nun könnte man natürlich mit Interna von hyperref rummurksen, bis es endlich klappt. Ich würde aber stattdessen analog zu \eqref ein \autoeqref definieren und am besten auch gleich \eqref selbst umdefinieren, so dass die Klammern ebenfalls Teil des Links werden:
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{hyperref}

\makeatletter
\renewcommand*{\eqref}{%
  \@ifstar {\@@eqref}{\@eqref}%
}
\newcommand*{\@@eqref}[1]{%
  \textup{\tagform@{\ref*{#1}}}%
}
\newcommand*{\@eqref}[1]{%
  \hyperref[#1]{\@@eqref{#1}}%
}
\newcommand*{\autoeqref}[1]{%
  \hyperref[#1]{\equationautorefname\space\@@eqref{#1}}%
}
\makeatother

\begin{document}

\begin{align}
\label{eq:test}
  a=b
\end{align}
\autoref{eq:test} vs. \autoeqref{eq:test} vs. \eqref{eq:test}
vs. \eqref*{eq:test} vs. \ref{eq:test} vs. \ref*{eq:test}.

\end{document}
vielleicht kannst Du Heiko ja überreden, dass er zumindest die Umdefinierung von \eqref direkt in hyperref einbaut. Wäre IMHO sinnvoll.

Nach oben