У меня есть куча кода в среде lstlisting. Как я могу выделить (цветной фон) только определенный фрагмент кода в среде?Выделение фрагмента кода в lstlisting
ответ
Вы можете использовать \ ColorBox и экранирующий символ внутри вашего предложения:
Добавить в вашей преамбулой
\usepackage{color}
\definecolor{light-gray}{gray}{0.80}
затем использовать его, как это в вашем документе:
\begin{lstlisting}[escapechar=!]
def mult(m: Matrix[Int], n: Matrix[Int]) {
val p = !\colorbox{light-gray}{new MatrixInt}!(m.rows, n.cols)
}
\end{lstlisting}
Спасибо! Это именно то, что мне нужно. –
Мне нужно что-то дополнительное. Я использую пакет Beamer для своей презентации, и мне нужно выделить код, присутствующий в lstlisting. Разница в моей потребности заключается в том, что я не могу изменить код внутри lstlisting, например, экранирование или определение специального комментария. Код присутствует внутри другого файла, который нельзя изменить. Копирование кода и внесение изменений не является вариантом, так как их много. Можем ли мы указать извне (т. Е. В \ begin {lstlisting}), какие строки выделить? – thequark
Приятный, но он не работает с несколькими строками, и вы теряете подсветку синтаксиса внутри 'colorbox'. – Julian
Пакет с перечислением предоставляет backgroundcolor = \ color {} в качестве опции, но я уверен, что делает весь цвет BG, а не куском.
Вы могли бы взглянуть на то, чтобы поместить его в паршок с цветом или пакет цветной коробки.
Это немного громоздко, но вы можете разбить код на несколько окружений lstlisting
.
\begin{lstlisting}
line
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}[backgroundcolor=\color{pink}]
very
interesting
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}
line
line
\end{lstlisting}
Будет ли это работать, если у вас есть, например, номера строк, или они будут перезапущены? – Edd
@Edd: по умолчанию они будут перезапущены, но вы можете использовать ключевое слово 'firstnumber', чтобы исправить это. В этом примере вы должны использовать 'firstnumber = 2' и' firstnumber = 4' во второй и третьей средах 'lstlisting', соответственно. Использование 'firstnumber = last' должно продолжать нумерацию из предыдущей среды' lstlisting', но когда я ее пробую, она отключается на единицу. –
Оказалось, что существует еще лучшее решение проблемы с нумерацией: используйте ключевое слово 'name' (например,' \ begin {lstlisting} [name = asdf, ... '). Имя не отображается, а в средах 'lstlisting' с таким же именем по умолчанию используется счетчик строк. –
В будущем, пожалуйста, задайте вопросы, связанные с LaTeX, по адресу: https://tex.stackexchange.com. –
@IoannisFilippidis Это было бы полезно узнать ... 8 лет назад. –