我很快就要就 OpenMP 发表演讲,目前正在准备幻灯片beamer
。由于 OpenMP 的很多神奇之处都发生在#pragma
指令内部,因此我想用一些明亮的颜色突出显示这些指令(但仍然突出显示其余代码)。我正在使用该minted
包来列出代码。目前,下面的代码将导致#include
语句和#pragma
行以相同的黄色突出显示。假设我希望将代码#pragma omp parallel
突出显示为鲜红色,同时保持其他所有内容不变。
\documentclass{beamer}
\usepackage{minted}
\newminted{c}{fontsize=\footnotesize,bgcolor=lightgray}
\begin{document}
\begin{frame}[fragile]
\begin{ccode}
#include <stdio.h>
#include <omp.h>
int main (int argc, char *argv[]) {
#pragma omp parallel
{
int tid = omp_get_thread_num();
printf("Hello from thread %d\n", tid);
}
return 0;
}
\end{ccode}
\end{frame}
\end{document}
使用 进行编译xelatex -shell-escape test.tex
。结果:
答案1
更新 2017-01-11:此功能不再适用于 的最新版本minted
。更新、类似的解决方案目前确实有效。
可以通过修改底层 Pygments 样式宏来实现这一点。这将适用于 的最新版本minted
,但由于它正在修改内部结构,因此将来可能并不总是有效。如果您想使用不同的突出显示样式,则需要将 替换default
为\PYGdefault
不同的样式名称。此外,如果您想使用不同的样式,则需要\usemintedstyle
在序言中使用 。
\documentclass{article}
\usepackage{minted}
\newminted{c}{fontsize=\footnotesize,bgcolor=lightgray}
\AtBeginDocument{%
\let\originalpyg\PYGdefault
\renewcommand{\PYGdefault}[2]{%
\ifstrequal{#1}{c+cp}%
{\IfBeginWith{#2}{\PYGZsh{}pragma}%
{\originalpyg{#1}{\color{red}{#2}}}%
{\originalpyg{#1}{#2}}}%
{\originalpyg{#1}{#2}}%
}%
}
\begin{document}
\begin{ccode}
#include <stdio.h>
#include <omp.h>
int main (int argc, char *argv[]) {
#pragma omp parallel
{
int tid = omp_get_thread_num();
printf("Hello from thread %d\n", tid);
}
return 0;
}
\end{ccode}
\end{document}