Stimmt. \noeqref fügt offenbar ein Leerzeichen ein. Lässt sich einfach beseitigen:
Code:
\documentclass{article}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\usepackage{hyperref}
\usepackage{xpatch}
\makeatletter
\xpretocmd\HyRef@autoref{\noeqref{#2}\unskip}{}{}% kleiner Hack
\makeatother
\begin{document}
\section{Test}\label{sec:ok}
\begin{equation}
\label{eq:a}
x=y
\end{equation}
\begin{equation}
\label{eq:b}
a=b
\end{equation}
See \autoref{eq:a} and \eqref{eq:b} in \autoref{sec:ok}.
\noindent See \autoref{eq:a} and \eqref{eq:b} in\\%
\autoref{sec:ok}.
\end{document}
Ob das Einfügen des Leerzeichens wirklich beabsichtigt ist, wage ich zu bezweifeln. Ich vermute eher, dass ein Bug in mathtools ist. Da fehlt eventuell in der Definition von \noeqref ein % am Ende der vorletzten Zeile von:
Code:
\newcommand\noeqref[1]{\@bsphack
\@for\@tempa:=#1\do{%
\@safe@activestrue%
\edef\@tempa{\expandafter\@firstofone\@tempa}%
\@ifundefined{r@\@tempa}{%
\protect\G@refundefinedtrue%
\@latex@warning{Reference `\@tempa' on page \thepage \space
undefined (\string\noeqref)}%
}{}%
\if@filesw\protected@write\@auxout{}%
{\string\MT@newlabel{\@tempa}}\fi%
\@safe@activesfalse}
\@esphack}
Dagegen sind drei der anderen % schlicht überflüssig (nach \@safe@activetrue, \G@refundefinedtrue und nach \fi). Vielleicht solltest Du Lars Madsen mal darauf aufmerksam machen.
Das \unskip in meinem Beispiel stört übrigens auch nicht, falls das in mathtools irgendwann einmal korrigiert werden sollte.
Lesezeichen