请原谅我的天真,但我有一个相当大的 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}