自動將特殊格式套用至文字中選定的單字

自動將特殊格式套用至文字中選定的單字

讓 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

為了我的使用樂趣乳膠3,下面的程式碼定義了一個環境boldwords,​​該環境接受逗號分隔的單字列表,並在環境中以粗體排版。運行 MWE 會產生:

在此輸入影像描述

請特別注意,logincatalogue未加粗,因為它不是一個完整的單字。

\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}

相關內容