lstlisting:如何对齐突出显示的代码

lstlisting:如何对齐突出显示的代码

我想定义几个新命令来突出显示我的代码的某些部分(这实际上是为了跟踪转储,而不是为了编程语言)。

我的问题是,我似乎无法使彩色文本与列表文本正确对齐。请参阅“Hello worlds”。

我尝试添加\ttfamily新的命令定义,但没有帮助。还尝试了不同的字体大小,我相信彩色和非彩色文本字体的大小相同,所以我认为这不是问题所在。

\documentclass{article}

\usepackage{listings}
\lstset{
  basicstyle=\ttfamily\large,
  breakatwhitespace=false,
  breaklines=true,
  escapeinside={\%*}{*},
}

\usepackage{color}
\definecolor{mycolorGreenOne}{rgb}{0, 0.7, 0}
\newcommand*{\listingsHigh}[1]{\textcolor{red}{#1}}
\newcommand*{\LighthighOne}{\color{cyan}}

\begin{document}
\begin{lstlisting}
My text: %*\LighthighOne Hello world!* Goodbye!
My text: Hello world! Goodbye!
My text: %*\listingsHigh{Hello world!}* Goodbye!
\end{lstlisting}
\end{document}

答案1

问题解决了!我补充道:columns=fullflexible

我应该提到,文档中对 fullflexible 的描述似乎与实际操作相悖。这是因为它似乎表明 fixed 保持列“对齐”,而 Flexible“破坏”列以确保尊重原始字体对齐。然而,它fixed不起作用,但fullflexible确实有效。如果有人愿意解释原因,我将不胜感激。

参见第 2.10 节:清单 pdf

\documentclass{article}

\usepackage{listings}
\lstset{
  basicstyle=\ttfamily\large,
  breakatwhitespace=false,
  breaklines=true,
  escapeinside={\%*}{*},
  columns=fullflexible
}

\usepackage{color}
\definecolor{mycolorGreenOne}{rgb}{0, 0.7, 0}
\newcommand*{\listingsHigh}[1]{\textcolor{red}{#1}}
\newcommand*{\LighthighOne}{\color{cyan}}

\begin{document}
\begin{lstlisting}
My text: %*\LighthighOne Hello world!* Goodbye!
My text: Hello world! Goodbye!
My text: %*\listingsHigh{Hello world!}* Goodbye!
\end{lstlisting}
\end{document}

相关内容