为 \texttt 块添加高亮显示

为 \texttt 块添加高亮显示

我正在尝试在命令中添加灰色突出显示,\texttt以实现与code blocks on here.

这是我在第一次开始编写当前文档时尝试做的事情。我不记得我是怎么做到的,但我写的更新命令如下所示:

\definecolor{Light}{gray}{.90}
\sethlcolor{Light}

\renewcommand{\texttt}{\hl}

这给了我灰色的高亮,但是字体不再是等宽的。

谁能帮我?

答案1

您需要做一个小调整:

\let\OldTexttt\texttt
\renewcommand{\texttt}[1]{\OldTexttt{\hl{#1}}}

得到normal text \texttt{foo bar} normal text收益:

在此处输入图片描述

替代解决方案:

请注意,上述解决方案将产生影响全部的使用\texttt{}。如果不希望这样,另一种解决方案是定义自定义宏:

\newcommand{\hltexttt}[1]{\texttt{\hl{#1}}}

然后\hltexttt{}在您想要\hl\texttt效果时使用。

代码:

\documentclass{article}
\usepackage{xcolor}
\usepackage{soul}

\definecolor{Light}{gray}{.90}
\sethlcolor{Light}

\let\OldTexttt\texttt
\renewcommand{\texttt}[1]{\OldTexttt{\hl{#1}}}% will affect all \texttt
%\newcommand{\hltexttt}[1]{\texttt{\hl{#1}}}% comment above \renewcommand if want this

\begin{document}
normal text \texttt{foo bar} normal text 
\end{document}

答案2

Peter Grill 已经提供了很好的答案。作为替代方案,您也可以使用\colorbox或来实现这一点\fcolorbox。该字母还允许您指定边框颜色:

在此处输入图片描述

代码:

\usepackage{xcolor}
\definecolor{codebg}{gray}{0.95}
\definecolor{codeframe}{gray}{0.8}

\newcommand{\inlinecode}[1]{\fcolorbox{codeframe}{codebg}{\small\!\texttt{#1}\!}}
normal text \inlinecode{foo bar} normal text

相关内容