Übermäßiger Speicherplatz in lstinline nach der Verwendung von Reactivatenumber

Übermäßiger Speicherplatz in lstinline nach der Verwendung von Reactivatenumber

Ich verwende den Code vondiese Antwort(das wiederum basiert aufDas), um die Zeilennummern in einigen Zeilen in zu unterdrücken lstlisting. Das funktioniert, aber nachdem ich es verwende, lstinlineist der Abstand in durcheinander:

durcheinander geratener Zeilenabstand

Dies scheint an zu liegen |\Reactivatenumber{12}|. Warum ist das so und wie behebe ich das Problem?

MWE:

\documentclass{article}
\usepackage{listings}
\lstset{numbers=left,escapeinside=||, basicstyle=\ttfamily\footnotesize}

\let\origthelstnumber\thelstnumber
\makeatletter
\newcommand*\Suppressnumber{%
  \lst@AddToHook{OnNewLine}{%
    \let\thelstnumber\relax%
     \advance\c@lstnumber-\@ne\relax%
    }%
}

\newcommand*\Reactivatenumber[1]{%
  \setcounter{lstnumber}{\numexpr#1-1\relax}
  \lst@AddToHook{OnNewLine}{%
   \let\thelstnumber\origthelstnumber%
   \refstepcounter{lstnumber}
  }%
}
\makeatother

\begin{document}
This looks fine: \lstinline!some-words-with-minus! more text\dots
\begin{lstlisting}[firstnumber=1]
var myFunc = function() {|\Suppressnumber|
    //my function does many great things
    //and it's only 10 lines long!|\Reactivatenumber{12}|
}
\end{lstlisting}

This looks awful: \lstinline!some-words-with-minus! some more text
\end{document}

Antwort1

%OK, habe es gefunden: Ich musste ein Nachher hinzufügen \refstepcounter{lstnumber}.

Vollständiger Ausschnitt:

\let\origthelstnumber\thelstnumber
\makeatletter
\newcommand*\Suppressnumber{%
  \lst@AddToHook{OnNewLine}{%
    \let\thelstnumber\relax%
     \advance\c@lstnumber-\@ne\relax%
    }%
}

\newcommand*\Reactivatenumber[1]{%
  \setcounter{lstnumber}{\numexpr#1-1\relax}
  \lst@AddToHook{OnNewLine}{%
   \let\thelstnumber\origthelstnumber%
   \refstepcounter{lstnumber}%
  }%
}
\makeatother

verwandte Informationen