代码之家  ›  专栏  ›  技术社区  ›  fredoverflow

如何强调lstlist的部分内容?

  •  8
  • fredoverflow  · 技术社区  · 15 年前

    如何将lstlisting的某些部分设置为黑体?

    \begin{lstlisting}[escapechar=@]
    fun(foo, bar, @\textbf{baz}@ );
    \end{lstlisting}
    

    这是编译的,但是baz没有用黑体字设置:(我缺少什么?

    3 回复  |  直到 11 年前
        1
  •  4
  •   High Performance Mark    15 年前

    你的基本方法应该是列出要强调的单词。这样做的一个简单方法是:

    \lstset{emph={baz},emphstyle=\textbf}
    

    当然,这将强调 baz 无论何时发生。但这是一种比尝试将标记放入列表本身更好的方法,您不希望(应该)这样做,因为您(应该)希望使用列表来格式化未修改的代码段。尤其是当您包含源文件而不是键入代码片段时。

    一旦你掌握了基本知识,看看文档,了解如何设置关键字和标识符的样式,以及如何修改所选语言的关键字内置列表。

        2
  •  5
  •   Lumen    13 年前

    您的解决方案是正确的。但是,标准的乳胶单空格字体没有黑体版本,所以 \textbf 什么都不做 lstlisting 环境。根据 macfreek.nl ,可以执行以下操作重新声明黑体版本:

    \DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}
    

    我已经测试了以下示例,它可以按照您的需要工作:

    \documentclass{article}
    \usepackage{listings}
    \DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}
    \lstset{language=C, basicstyle=\ttfamily}
    \begin{document}
    
    \begin{lstlisting}[escapechar=@]
    fun(foo, bar, @\textbf{baz}@ );
    \end{lstlisting}
    
    \end{document}
    

    我用同样的方法 \color{red} 而不是 \文本bf 提示Beamer演示文稿的观众两个几乎相同的代码列表之间的区别。

        3
  •  4
  •   velop    11 年前

    我在下面找到了一个答案 http://www.mrunix.de/forums/archive/index.php/t-42976.html

    \lstset{moredelim=[is][\bfseries]{[*}{*]}}
    \begin{lstlisting}
    bla bla bla
    blupp
    [*wichtiger hervorzuhebender text*]
    weiter im text
    \end{lstlisting}