텍스트에서 선택한 단어에 특수 서식을 자동으로 적용

텍스트에서 선택한 단어에 특수 서식을 자동으로 적용

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를 실행하면 다음이 생성됩니다.

여기에 이미지 설명을 입력하세요

특히 login 은 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}

관련 정보