Forum:  Textsatz mit LaTeX
Thema: mathtools: showonlyrefs funktioniert nicht in section{} und caption{}
Themen-Übersicht
baetscheler
Aktiv
Dabei seit: 10.11.2007
Mitteilungen: 1000
Aus:
Themenstart: 2011-03-30 19:39

Hallo,
nachdem jannna mich hier auf das package mathtools mit der Option showonlyrefs aufmerksam gemacht hatte, habe ich es gerade mal ausprobiert. Das funktioniert aber leider nicht einwandfrei, wenn ich innerhalb von \section{} oder \caption{} Gleichungen referenzieren moechte (siehe Minimalbeispiel). Gibt es eine Loesung fuer dieses Problem?

Tobias

EDIT: Minimalbeispiel korrigiert.
LaTeX
\documentclass{scrartcl}
 
\usepackage{amsmath}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
 
\begin{document}
 
\begin{align}
a=b \label{eq1} \\
c=d \label{eq2}
\end{align}
 
\section{\eqref{eq1}}
 
\begin{figure}[ht]
\caption{\eqref{eq1}}
\end{figure}
 
 
\end{document}

[ Nachricht wurde editiert von baetscheler am 30.03.2011 20:07:17 ]


Schweinebacke
Senior
Dabei seit: 07.04.2010
Mitteilungen: 317
Aus:
Beitrag No.1, eingetragen 2011-03-30 19:57

Durch showonlyrefs wird \eqref zerbrechlich. Standardlösung dafür ist \protect:
latex
\documentclass{scrartcl}
 
\usepackage{amsmath}
\usepackage{mathtools}
 
\begin{document}
\mathtoolsset{showonlyrefs}
\begin{align}
a=b \label{eq1} \\
c=d \label{eq2}
\end{align}
 
\section{\protect\eqref{eq1}}
 
\begin{figure}[ht]
\caption{\protect\eqref{eq1}}
\end{figure}
 
 
\end{document}
Disclaimer: Da Dein eigenes Beispiel das Problem gar nicht gezeigt hat (mathtools wird dort überhaupt nicht verwendet), kann ich nur vermuten, dass meine Antwort sich auf das Problem beziehen. Sollte dies nicht der Fall sein, bitte ich dies zu entschuldigen.


jannna
Senior
Dabei seit: 04.05.2003
Mitteilungen: 2160
Aus: Hannover
Beitrag No.2, eingetragen 2011-03-30 20:01

2011-03-30 19:57 - Schweinebacke in Beitrag No. 1 schreibt:
Durch showonlyrefs wird \eqref zerbrechlich.

Was bedeutet denn zerbrechlich?


baetscheler
Aktiv
Dabei seit: 10.11.2007
Mitteilungen: 1000
Aus:
Beitrag No.3, vom Themenstarter, eingetragen 2011-03-30 20:36

2011-03-30 19:57 - Schweinebacke in Beitrag No. 1 schreibt:
Da Dein eigenes Beispiel das Problem gar nicht gezeigt hat (mathtools wird dort überhaupt nicht verwendet), kann ich nur vermuten, dass meine Antwort sich auf das Problem beziehen.

Ja, ich hatte leider das lauffaehige Minmalbeispiel gepostet, Entschuldigung. Dein Beispiel loest das Problem fast. Einen Fehler gibt es immer noch, ich habe schon herausgefunden, dass sich mathtools/showonlyrefs sich anscheinend mit hyperref nicht vertraegt. Wenn ich \usepackage{hyperref} im u.a. Minimalbeispiel auskommentiere klappt es, ansonsten laeuft es nicht... gibt's dafuer vielleicht auch noch ne Loesung?

Danke,
Tobias


LaTeX
\documentclass{scrartcl}
 
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
 
\begin{document}
%
\begin{align}
a=b \label{eq1}
\end{align}
%
%
\section{sec2 refering to \protect\eqref{eq1} }
%
\end{document}


Schweinebacke
Senior
Dabei seit: 07.04.2010
Mitteilungen: 317
Aus:
Beitrag No.4, eingetragen 2011-03-31 11:16

Mit hyperref gibt es offenbar Probleme damit, dass \eqref dann nicht das richtige (von hyperref behandelte) \ref verwendet. Du solltest das an den hyperref-Autor und den mathtools-Autor melden (Adressen stehen in den Anleitungen, bei hyperref in README.pdf). Vielleicht können die das Problem in einer zukünftigen Version lösen. Bis dahin hilft ein weniger schöner Workaround.
LaTeX
\documentclass{scrartcl}
 
\usepackage{amsmath}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\usepackage{hyperref}
 
\begin{document}
%
\begin{align}
a=b \label{eq1}
\end{align}
%
%
\section[sec2 refering to (\ref{eq1})]{sec2 refering to \protect\eqref{eq1} }
%
\end{document}
oder
LaTeX
\documentclass{scrartcl}
 
\usepackage{amsmath}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\usepackage{hyperref}
 
\begin{document}
%
\begin{align}
a=b \label{eq1}
\end{align}
%
%
\section[sec2 refering to (\ref*{eq1})]{sec2 refering to \protect\eqref{eq1} }
%
\end{document}


Schweinebacke
Senior
Dabei seit: 07.04.2010
Mitteilungen: 317
Aus:
Beitrag No.5, eingetragen 2011-03-31 11:19

2011-03-30 20:01 - jannna in Beitrag No. 2 schreibt:
2011-03-30 19:57 - Schweinebacke in Beitrag No. 1 schreibt:
Durch showonlyrefs wird \eqref zerbrechlich.

Was bedeutet denn zerbrechlich?
Zerbrechlich bedeutet, dass die Anweisungen innerhalb von moving arguments nicht korrekt expandiert werden können. Siehe dazu  die Erklärung in der DE-TeX-FAQ.


baetscheler
Aktiv
Dabei seit: 10.11.2007
Mitteilungen: 1000
Aus:
Beitrag No.6, vom Themenstarter, eingetragen 2011-03-31 12:34

Hallo,
danke, das Problem ist damit geloest. Es funktioniert uebrigens auch so:
LaTeX
\documentclass{scrartcl}
 
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
 
\begin{document}
 
\begin{align}
a=b \label{eq1}
\end{align}
%
%
\section{sec2 refering to (\protect\ref{eq1}) }
%\section[sec2 refering to (\ref{eq1})]{sec2 refering to \protect\eqref{eq1} }
%
\end{document}

Allerdings komischerweise nicht in diesem Minimalbeispiel, in meinem Originaldokument klappt es allerdings in dieser Form. Ich habe jetzt gerade aber keine Zeit zu testen, woran das genau liegt. Naja, erstmal klappts, das spezielle Problem ist geloest und um das allgemeine Problem kuemmere ich mich dann noch mal spaeter ;).
Tobias


Schweinebacke
Senior
Dabei seit: 07.04.2010
Mitteilungen: 317
Aus:
Beitrag No.7, eingetragen 2011-03-31 14:49

2011-03-31 12:34 - baetscheler in Beitrag No. 6 schreibt:
danke, das Problem ist damit geloest.
Dann setze ich mal das OK-Häkchen für Dich ...




Dieses Forumbeitrag kommt von Matroids Matheplanet
https://https://matheplanet.de

Die URL für dieses Forum-Thema ist:
https://https://matheplanet.de/default3.html?topic=152873=409
Druckdatum: 2020-02-26 05:51