Falsche C++-Codeformatierung des Zeigers in der Nähe von Zeichen mithilfe des Listings-Pakets und von lstlistings

Falsche C++-Codeformatierung des Zeigers in der Nähe von Zeichen mithilfe des Listings-Pakets und von lstlistings

Ich versuche, ein einfaches „Hallo Welt“ in C++ in LaTeX mit Listings-Paket zu erstellen. Am besten gleich nachsehen. Bildbeschreibung hier eingeben

Hier der Code:

\begin{figure}
    \begin{lstlisting}[language={[11]C++},
      %float,
      keepspaces=true,
      escapeinside={},
      showspaces=false,
      showstringspaces=false,
      stringstyle=\color{green},
      frame=single,
      numbers=left]
#include <iostream>

int main(int argc, char** argv)
{
    std::cout << "hello world" << std::endl;
    return std::cout.fail();
}   \end{lstlisting}
    \caption{C++ Hello World Example}
    \label{lst:hello}
\end{figure}

Auf dem Bild sehen Sie eine seltsame Position in der Nähe von char**, sie sieht aus wie ein Unterstrich, aber warum und wie kann man das beheben? Vielen Dank im Voraus!

Antwort1

Ich empfehle Ihnen, das Paket auszuprobieren piton(es erfordert die Verwendung von LuaLuaTeX).

Hier Ihr Beispiel, formatiert pitonmit der Schriftart JetBrains Mono.

\documentclass{article}
\usepackage{fontspec}
\usepackage{piton}

\setmonofont{JetBrains Mono}

\begin{document}

\SetPitonStyle[C]{String.Long = \color{green}}

\begin{Piton}[language = C,line-numbers]
#include <iostream>

int main(int argc, char** argv)
{
    std::cout << "hello world" << std::endl;
    return std::cout.fail();
}
\end{Piton}

\end{document}

Ausgabe des obigen Codes

Antwort2

Ich habe ein Problem mit der Schriftart festgestellt. Ich verwende die Schriftart JetBrains Mono. Wenn ich die Schriftart mit dem Code „basicstyle=\ttfamily“ ändere, sieht alles gut aus, aber jetzt muss ich herausfinden, wie ich JetBrains Mono in Codeauflistungen verwenden kann … So sieht es aus: Bildbeschreibung hier eingeben

Aktualisieren:Der Fix für die Schriftart JetBrains Mono war einfach. Ich habe es einfach so eingestellt: \setmainfont{JetBrains Mono} und muss hinzufügen: \setmonofont{JetBrains Mono}. Jetzt sieht alles gut aus: Bildbeschreibung hier eingeben

verwandte Informationen