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}

Связанный контент