listings パッケージと lstlistings を使用した char 付近のポインタの C++ コード フォーマットが正しくありません

listings パッケージと lstlistings を使用した char 付近のポインタの C++ コード フォーマットが正しくありません

listings パッケージを使用して、LaTeX で C++ の簡単な hello world を実行しようとしています。一度確認したほうがよいでしょう。 ここに画像の説明を入力してください

コードは次のとおりです:

\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}

画像では、char** の近くに奇妙な位置があり、アンダースコアのように見えますが、なぜでしょうか。また、どのように修正すればよいでしょうか。よろしくお願いします。

答え1

パッケージを試してみることをお勧めしますpiton(LuaLuaTeX の使用が必要です)。

pitonここでは、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}

上記コードの出力

答え2

フォントに問題があることがわかりました。JetBrains Mono フォントを使用しています。コード: basicstyle=\ttfamily でフォントを変更すると、すべて適切に表示されますが、コード リスト内で JetBrains Mono を使用する方法を見つける必要があります... 表示は次のようになります。 ここに画像の説明を入力してください

アップデート:JetBrains Mono フォントの修正は簡単で、次のように設定するだけです: \setmainfont{JetBrains Mono} そして追加する必要があるのは: \setmonofont{JetBrains Mono} これですべて見栄えが良くなりました: ここに画像の説明を入力してください

関連情報