清單中避免在 `std::cout` 前後有空格

清單中避免在 `std::cout` 前後有空格

在這個例子中:

\documentclass{article}
\usepackage{listings}

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

\begin{document}

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

\end{document}

我得到的是std :: mutex mtx;.我不希望這些自動空格處於清單模式。

有辦法禁用它們嗎?

答案1

這是固定列預設設定的結果,即每個字元具有相同的寬度。因為:字元不是很寬,所以看起來像是引入了空格。

解決方法是將 的文字寬度設為::1 個字符,即literate={::}{{::}}1.否則,您可以使用靈活或完全靈活的列。另一種選擇是使用電傳打字機字體,在這種情況下,::字元更寬且間距均勻,因此看起來不會引入額外的空格。

微量元素:

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

結果:

在此輸入影像描述

相關內容