lstlisting: cómo alinear el código resaltado

lstlisting: cómo alinear el código resaltado

Quiero definir un par de comandos nuevos para resaltar partes de mi código (esto en realidad es para un volcado de seguimiento, no para un lenguaje de programación).

Mi problema es que parece que no puedo hacer que el texto en color se alinee correctamente con el texto de los listados. Ver "Hola mundos".

Intenté agregar \ttfamilya la nueva definición de comando pero no ayudó. También probé diferentes tamaños de fuente y creo que tanto la fuente de texto coloreada como la no coloreada tienen el mismo tamaño, así que no creo que ese sea el problema.

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

Respuesta1

¡Resuelve el problema! Yo añadí: columns=fullflexible.

Debo mencionar que la descripción de fullflexible en la documentación me parece contradictoria con respecto a lo que realmente se está haciendo. Esto porque parece indicar que fijo mantiene las columnas "alineadas" y flexible "destruye" las columnas para asegurarse de que se respete la alineación de fuente original. Sin embargo, fixedno funciona pero fullflexiblelo hace. Si alguien quiere explicar por qué se lo agradecería.

Ver sección 2.10:listados 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}

información relacionada