强调文档中出现的所有单词

强调文档中出现的所有单词

请原谅我的天真,但我有一个相当大的 TeX 文档,我希望有一种简单的方法来执行以下操作。我可以使用以下命令在文本中创建代码块:

\begin{lstlisting}
TEST
\end{lstlisting}

这将为所有单词提供lstlisting不同的字体,以将其作为代码与普通文本区分开来。

我希望有一种方法可以搜索整个文档并将这些标签添加到单词中。例如,每次出现单词“TEST”时,它都会被包裹在:

\begin{lstlisting}
TEST
\end{lstlisting}

答案1

必须使用 XeTeX 进行编译。

% arara: xelatex
\documentclass{article}
\usepackage{xesearch}
\SearchList{make-blue}{\textcolor{blue}{#1}}{test}
\SearchList{make-red}{\textcolor{red}{#1}}{maybe,different}
\SearchList{code}{\lstinline{#1}}{code}

\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\usepackage{xcolor}

\begin{document}
Hello, this is a test, Test, TEST.

But maybe you want a different test.

Some code.
\end{document}

输出

请注意,您可以使用 使整个列表区分大小写,\SearchList*或者使用 使特定的单词区分大小写\SearchList{...}{...}{...,*Word,...}

答案2

这是一个基于 LuaLaTeX 的解决方案。请注意,搜索区分大小写:虽然“TEST”突出显示,但“test”、“Test”和“TeSt”不突出显示。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{xcolor,luacode,luatexbase}

%% Lua-side code
\begin{luacode}
function highlight_TEST ( line )
    return string.gsub ( line, "TEST", 
                         "\\textcolor{red}{\\texttt{TEST}}" )
end
luatexbase.add_to_callback ( "process_input_buffer",
          highlight_TEST, "highlight_TEST" )
\end{luacode}

\begin{document}

A test, Test, TEST, TeSt, tESt.

\end{document}

相关内容