латекс и списки: выделение некоторых частей кода - PullRequest
9 голосов
/ 05 мая 2010

Я использую латекс и пакет listings для отображения некоторого кода C ++ (с подсветкой синтаксиса) внутри документа.

Мне нужно выделить некоторые части кода. Это конкретное выделение не имеет ничего общего с подсветкой синтаксиса, это лишь некоторые части кода, которые я хотел бы выделить, чтобы читатель мог сосредоточиться на этом.

Хотелось бы сделать имя переменной, например, выделенным жирным шрифтом и на желтом фоне. Вот что я сделал с MSWord, и я хотел бы воспроизвести его с помощью латекса (конечно, не подчеркивая красным и зеленым):

http://img210.imageshack.us/img210/5302/coden.png.

Я не нашел способа сделать это с пакетом listings. Возможно ли это?

Ответы [ 3 ]

10 голосов
/ 23 мая 2011

К сожалению @ Подход Конрада действительно полностью исключает форматирование listings. Если выделенный текст содержит какие-либо программные ключевые слова, эти ключевые слова не будут выделены пакетом listings, как они будут в невыделенных строках. В идеале можно использовать \highlight{\lstinline{...}}, но, похоже, вы не можете вложить макрос \lstinline в среду listings.

На сайте TeX StackExchange есть , по сути, тот же вопрос , с хорошим ответом на основе пакета tikz и его дальнейшего уточнения . Он перекрывает подсветку, в то же время позволяя listings автоматически форматировать выделенный текст.

Весь этот tikz подход обрел собственную жизнь , что в итоге привело к хорошему, надежному решению . В настоящее время это наиболее известный (для меня) подход к выделению выделенных listings строк при сохранении автоматической подсветки синтаксиса. На самом деле он будет работать так же хорошо, чтобы перемещать блики между любой парой местоположений на данной странице.

6 голосов
/ 05 мая 2010

Вы можете включить произвольные команды LaTeX в вашем listings регионе:

\begin{listings}[escapeinside=\{\}]
{\highlight{Colonnes[3] = 9}}
\end{listings}

\highlight - ваш макрос подсветки (вы должны написать его самостоятельно). См. Листинговую документацию, раздел 4.14 («Escape to LaTeX») для получения более подробной информации. Обратите внимание, что теперь вам нужно избегать любого другого появления специальных символов в вашем коде - так что для кода C ++ {}, вероятно, плохой выбор.

4 голосов
/ 16 декабря 2012

В коде C или C ++ я думаю, что символ ` может быть escape-символом.

lstset {
...
escapeinside=\`\`,
...
}

тогда, вы можете использовать его как

\begin{lstlisting}
const_cast<T>(`\it{exception}`)
\end{lstlisting}

слово exception затем становится исключением . Кстати, символ ` - это формат уценки символ для кода, поэтому его очень легко использовать в C или C ++, как листинг кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...