Vermeiden Sie Leerzeichen vor und nach `std::cout` in Auflistungen

Vermeiden Sie Leerzeichen vor und nach `std::cout` in Auflistungen

In diesem Beispiel:

\documentclass{article}
\usepackage{listings}

\lstset{
    language=c++,
    extendedchars=true,
    inputencoding=utf8,
    literate={::}{{::}}2
}

\begin{document}

\begin{lstlisting}
std::mutex mtx;
\end{lstlisting}

\end{document}

Was ich bekomme ist std :: mutex mtx;: Ich möchte diese automatischen Leerzeichen nicht im Listenmodus.

Gibt es eine Möglichkeit, sie zu deaktivieren?

Antwort1

Dies ist eine Folge der Standardeinstellung mit festen Spalten, d. h. jedes Zeichen hat die gleiche Breite. Da das :Zeichen nicht sehr breit ist, sieht es so aus, als ob ein Leerzeichen eingefügt wird.

Eine Problemumgehung besteht darin, die Literate-Breite auf 1 Zeichen festzulegen ::, also literate={::}{{::}}1. Andernfalls können Sie flexible oder vollflexible Spalten verwenden. Eine weitere Möglichkeit wäre, eine Teletype-Schriftart zu verwenden, in der die ::Zeichen breiter und gleichmäßig verteilt sind, sodass es nicht so aussieht, als ob zusätzliche Leerzeichen eingefügt würden.

MWE:

\documentclass{article}
\usepackage{listings}

\lstset{frame=single}
\begin{document}
\noindent \textit{Flexible columns:}
\begin{lstlisting}[columns=flexible]
std;;mutex mtx;
wwwwwwwwwwwwww;

std::mutex mtx;
\end{lstlisting}
\noindent \textit{Full-flexible columns:}
\begin{lstlisting}[columns=fullflexible]
std;;mutex mtx;
wwwwwwwwwwwwww;

std::mutex mtx;
\end{lstlisting}

\lstset{
    columns=fixed,
    language=c++,
    extendedchars=true,
    inputencoding=utf8,
    literate={::}{{::}}1
}
\noindent\textit{Fixed columns, :: seen as 1 character:}
\begin{lstlisting}
std;;mutex mtx;
wwwwwwwwwwwwww;

std::mutex mtx;
\end{lstlisting}

\lstset{
    columns=fixed,
    language=c++,
    extendedchars=true,
    inputencoding=utf8,
    basicstyle=\ttfamily,
    literate={::}{{::}}2
}
\noindent\textit{Fixed columns, :: seen as 2 characters, teletype font:}
\begin{lstlisting}
std;;mutex mtx;
wwwwwwwwwwwwww;

std::mutex mtx;
\end{lstlisting}


\end{document}

Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen