PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppeltes internes Kompilieren? Hilfe zu eigenem Paket erbeten



ctansearch
19-09-2012, 22:09
Hallo,
ich habe vor einiger Zeit ein sty-file "mbenotes.sty" geschrieben. In den meisten Fällen funktioniert das gut, aber manchmal, z.B. bei align, erscheinen die Notes doppelt. Dies scheint daher zu rühren, daß bestimmte Umgebungen, wie \begin{align} \end{align} wiederholt kompiliert werden. Hat jemand ein Idee, wie man das abstellen kann oder mein sty-file anpassen kann, sodaß die die Notes nur einmal erscheinen?
Beispiel:

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext,graphicx,amsmath,mbenotes,xc olor}
\begin{document}
\subsection{Blindtext}
\blindtext
\subsection{Picture}

\begin{picture}(0,0)
\put(0,0){Picture Environment\mbenote{Note im picture, nach dem picture dargestellt}}
\end{picture}
\thembenotes[mbenotes]
\subsection{Align}
\begin{align}
\underbrace{\cfrac{A}{B}}+
\underbrace{D}\mathnote{Note im align, nach dem align doppelt dargestellt}
\end{align}
\themathnotes[Mathnotes]
\subsection{Itemize}
\begin{itemize}
\item test
\item test\mbenote{Note im itemize, nach dem itemize dargestellt}
\end{itemize}
\thembenotes[mbenotes]
Normaler Text
\end{document}

rais
21-09-2012, 18:51
Moin moin,


ich habe vor einiger Zeit ein sty-file "mbenotes.sty" geschrieben. In den meisten Fällen funktioniert das gut, aber manchmal, z.B. bei align, erscheinen die Notes doppelt. Dies scheint daher zu rühren, daß bestimmte Umgebungen, wie \begin{align} \end{align} wiederholt kompiliert werden. Hat jemand ein Idee, wie man das abstellen kann oder mein sty-file anpassen kann, sodaß die die Notes nur einmal erscheinen?

Vllt hilft es, wenn Du beim \@mathnotetext erstmal schaust, ob gerade etwas ausgemessen werden soll?


\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext,graphicx,amsmath,mbenotes,xc olor}
\makeatletter
\long\def\@mathnotetext#1{%
\ifmeasuring@% siehe \measure@ in amsmath.sty
\else
\if@mathnotesopen \else \@openmathnotes \fi
\immediate\write\@mathnotes{\@doanmathnote{\@thema thmark}}%
\begingroup
\def\next{#1}%
\newlinechar='40
\immediate\write\@mathnotes{\meaning\next}%
\endgroup
\immediate\write\@mathnotes{\@endanmathnote}%
\fi
}
\makeatother
\begin{document}
\subsection{Align}
\begin{align}
\underbrace{\cfrac{A}{B}}+
\underbrace{D}\mathnote{Note im align, nach dem align doppelt dargestellt}
\end{align}
\begin{equation}
(a+b)^2 = a^2 + 2ab +b^2\mathnote{blubb}
\end{equation}
\themathnotes[Mathnotes]
\end{document}

BTW: ich vermisse bei Deinem mbenotes-Paket ein

\ProvidesPackage{mbenotes}[JJJJ/MM/TT (Version) Watmachtdat (ctansearch)]siehe `texdoc clsguide', Abschnitt `Identification' und schau Dir parallel dazu an, wie sich andere Pakete nach einem \listfiles in der .log bzw. auf der Konsole im *File List*-Block melden.
BTW2: Wenn Du auf Befehle anderer Pakete zugreifst, wäre es nicht verkehrt, diese z. B. per \RequirePackage anzufordern (und es nicht dem Nutzer überlassen, dafür zu sorgen, daß Dein Paket überhaupt nutzbar ist) oder zumindest zu testen, ob fraglicher Befehl überhaupt definiert ist (bzw. das entsprechende Paket -- oder eines der dafür in Frage kommenden Pakete -- geladen wurde).
BTW3: \tiny erwartet kein Argument, d. h. eine Gruppierung direkt danach ist überflüssig.

MfG

ctansearch
21-09-2012, 21:15
@rais Danke für die Tipps, ist einiges auch schon in Arbeit.