
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를 실행하면 다음이 생성됩니다.
특히 log
in 은 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}