Reactivatenumber를 사용한 후 lstinline에 과도한 공간이 있습니다.

Reactivatenumber를 사용한 후 lstinline에 과도한 공간이 있습니다.

나는 제시된 코드를 사용하고 있습니다이 답변(그 자체는 다음을 기반으로합니다.이것)의 일부 줄에서 줄 번호를 표시하지 않습니다 lstlisting. 이것은 작동하지만 사용하고 나면 간격이 lstinline엉망이 됩니다.

엉망인 lstinline 간격

때문인 것 같습니다 |\Reactivatenumber{12}|. 그 이유는 무엇이며 어떻게 해결합니까?

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}

답변1

%알았어 찾았습니다. after 를 추가해야 했습니다 \refstepcounter{lstnumber}.

전체 조각:

\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

관련 정보