自动将特殊格式应用于文本中选定的单词

自动将特殊格式应用于文本中选定的单词

是否有可能并且更有建设性地让 LaTeX 以特定方式自动格式化特定单词?例如,我想让“hello”一词的每个出现都以粗体青色等宽字体显示,而文档的其余部分保持正常、无衬线和黑色。

我怎样才能实现这一点,而不必每次在编译 .tex 文件之前都进行搜索和替换以将“hello”放入自定义命令中?

答案1

使用 XeLaTeX 编译

\documentclass{article}
\usepackage{color,xesearch}

\SearchList*{redwords}{\textcolor{red}{#1}}{hello}

\begin{document}
This is hello and this is hellow.
\end{document}

在此处输入图片描述

但不要使用它。如果你想特别标记一个单词,请使用宏。

为什么?依赖自动程序总是有风险的:如果我可以选择,我更喜欢显式标记。另一个原因是它xesearch耗费资源并且目前无人维护。

没有类似的东西pdflatex;LuaLaTeX 可以做一些事情。我试过了,chickenize但它似乎没有提供这个功能。

答案2

虽然有点晚了,但这里有一个基于 LuaLaTeX 的解决方案。它设置了一个扫描输入的函数TeX 进行任何常规处理;任何实例字符串hello都被“动态”替换为{\ttfamily\bfseries\color{cyan}hello},以便由 LaTeX 进行处理。

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}
\setmonofont{Courier New}[BoldFont="Courier New Bold"]
\usepackage{luacode,xcolor}
\begin{luacode}
function hello ( s ) 
   return (string.gsub(s , "(hello)(%L)", "{\\ttfamily\\bfseries\\color{cyan}%1}%2"))
end
\end{luacode}
\AtBeginDocument{\directlua{
  luatexbase.add_to_callback("process_input_buffer", hello, "hello")}}
\begin{document}
hello hellow Hello hello.
\end{document}

答案3

在 ConTeXt 中,您可以使用translate模块执行这样的编译时搜索和替换:

\usemodule[translate]
\definehighlight[SPECIAL][color=cyan, style=\ttbf]
\def\HELLO{\SPECIAL{hello}}
\translateinput[hello][\HELLO{}]
\enableinputtranslation

\setupbodyfont[ss,12pt]

\starttext
When you greet people, you say hello. 
\stoptext

这使:

在此处输入图片描述

答案4

为了我的娱乐使用LaTeX3,下面的代码定义了一个环境boldwords,该环境接受以逗号分隔的单词列表,这些单词将在环境内以粗体显示。运行 MWE 会产生以下结果:

在此处输入图片描述

特别注意,inlog没有catalogue加粗,因为它不是一个完整的单词。

\documentclass{article}
\usepackage{environ}
\usepackage{expl3}

\ExplSyntaxOn
\clist_new:N \l_bold_word_clist
\tl_new:N \l_BODY_tl
\NewEnviron{boldwords}[1]{
   \clist_set:Nn \l_bold_word_clist {#1}
   \tl_set:No \l_BODY_tl {\BODY}
   \clist_map_inline:Nn \l_bold_word_clist {
      \regex_replace_all:nnN {\b##1\b} { \c{textbf}\cB\{##1\cE\} } \l_BODY_tl
   }
   \l_BODY_tl
}
\ExplSyntaxOff

\begin{document}

  \begin{boldwords}{dog, log}
     a dog, a cat, a frog a log and a catalogue
     a dog, a cat, a frog a log and a catalogue
     a dog, a cat, a frog a log and a catalogue

     a dog, a cat, a frog a log and a catalogue
     a dog, a cat, a frog a log and a catalogue
  \end{boldwords}

\end{document}

相关内容