我需要在我的 Latex 文档中使用粗体或斜体表示某个单词,无论该单词在哪里使用,而无需在每个单词上明确提及textbf{}
和textit{}
。我该怎么做?
一个很好的类比是 CSS 到 HTML 标签。
在 Latex 中可以实现这个吗?
答案1
这是\mymarkup
带星号和不带星号的版本。不带星号的版本\textbf{...}
为斜体版本,带星号的版本为斜体版本。双星号的版本为大胆的和斜体可选参数会改变文本:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\mymarkup}{ssO{myword}}{%
\IfBooleanTF{#1}{%
\IfBooleanTF{#2}{%
{\bfseries\itshape #3}%
}{%
\textit{#3}%
}%
}{%
\textbf{#3}%
}%
}
\begin{document}
\mymarkup\ is better than \mymarkup*\, which is followed by \mymarkup**\ again
\mymarkup[Don't use xspace]\ is better than \mymarkup*[Don't use xspace]\, which is followed by \mymarkup**[Don't use xspace]\ again
\end{document}
答案2
如果每次都是类似的词,您可以创建一个命令:
\newcommand{\foo}{\textbf{foo}\xspace}
\textbf
另一个解决方案是为or创建更短的标签\textit
:
\newcommand{\tit}[1]{\textit{#1}}
\newcommand{\tbf}[1]{\textbf{#1}}
这些解决方案假设您没有以相同方式调用的特定命令,否则将引发错误。
答案3
为了多样化,这里有一个基于 LuaLaTeX 的解决方案。请注意,它不需要您以任何方式修改文档正文。整个文档中要以粗体斜体呈现的单词应列为函数的第二个参数string.gsub
。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function highlight_word ( line )
return string.gsub ( line, "myparticularword", "{\\bfseries\\itshape %0}" )
end
luatexbase.add_to_callback ( "process_input_buffer", highlight_word, "highlight_word" )
\end{luacode}
\begin{document}
An interesting story about myparticularword and its history \dots
\end{document}