是否可以使文档中的某些词语始终以粗体显示?

是否可以使文档中的某些词语始终以粗体显示?

我正在写一本 AWK 编程书,当我解释一些事情时,我总是引用特殊的 AWK 变量,例如ORS。是否可以这样设置 LaTeX,使这些单词在文本中始终以粗体显示,这样我就不必一直书写了\bf{ORS}

答案1

对于这样的工作,我通常会定义一个方便的宏:

\def\<#1>{\textbf{#1}}

现在,您可以\<ORS>不用花费太多的开销就能说出来,而且仍然不需要为所有特殊术语定义宏。在书中,您可能想考虑如何使用此宏来创建索引。(这有点棘手,可能需要一个单独的问题。)

答案2

我不想使用大量的\newcommands,而是定义一个宏来存储一些需要加粗的单词。这只是一个逗号分隔的列表。

\documentclass{article}
\usepackage{xspace}
\begin{document}
\makeatletter
\def\boldcommandlist{\@elt FS,\@elt OFS,\@elt RS,\@elt ORS,\@elt NR,\@elt NF,\@elt FNR,}
\def\@elt#1,{%
 \expandafter\def\csname#1\endcsname{\textbf{#1}\xspace}
}
\boldcommandlist

Awk \OFS is an output equivalent of awk \FS variable. 
By default awk OFS is a single space character.
Following is an awk \OFS example. Use the command \OFS.

\makeatother
\end{document}

包含\boldcommandlist需要以粗体排版的单词:

 \boldcommandlist{FS,OFS,...}

如果您愿意,稍后可以随时添加另一个。

\@elt元素的缩写,最初未定义。当我们给它一个定义时,它会将其参数作为下一个单词(以逗号分隔)并为其创建一个命令。是xspace一个小包,可以正确调整命令后的间距,以正确适应标点符号等。

答案3

使用 LuaTeX,您可以在将输入传递给 TeX 之前对其进行翻译。以下是在 ConTeXt 中进行自动翻译的示例:

\usemodule[translate]

% Notice the space before the words
\translateinput [ OFS][ \bold{OFS}]
\translateinput [ FS] [ \bold{FS}]

\enableinputtranslation

\starttext
Awk OFS is an output equivalent of awk FS variable. 
By default awk OFS is a single space character.
Following is an awk OFS example. Use the command OFS.

\stoptext

答案4

将 Christian 的答案与 Yiannis 的答案结合起来,您可以得到一个单一的\<...>标记,根据参数扩展到不同的内容(粗体、斜体……)。在某些情况下,当您有不同类型的单词需要突出显示时,它可能很有用。

\documentclass{article}
\usepackage{hyperref}% used for an example.

\def\<#1>{\csname keyword@@#1\endcsname}

\begingroup
\makeatletter
\def\do#1{\expandafter\doaux\expandafter{\keyword@style{#1}}{#1}}
\def\doaux#1#2{\global\@namedef{keyword@@#2}{#1}}   
\def\keyword@style#1{\textbf{#1}}
\do{FS}
\do{OFS}
\do{RS}
\do{ORS}
\do{NR}
\do{NF}
\do{FNR}
\def\keyword@style#1{#1\footnote{From the \<python> language.}}
\do{try}
\do{raise}
\def\keyword@style#1{\href{http://www.#1.org/}{#1}}
\do{python}
\do{CTAN}
\endgroup

\begin{document}
I don't know what \<OFS> is, nor \<RS>, but they seem to be parts 
of the awk language. On the other hand, I know a little bit about 
\<try> and \<raise>. There are many packages about \TeX\ on the
\<CTAN> website.
\end{document}

相关内容