我该如何向“不懂计算机”的 LaTeX 用户解释“内容和显示分离”的概念?

我该如何向“不懂计算机”的 LaTeX 用户解释“内容和显示分离”的概念?

我的朋友是一名数学研究生,自称是“计算机文盲”。他使用 LaTeX 写论文,但他会写(例如)a set is called $\mathit{regular}$ if [...]正统 LaTeX 用户会写 的地方a set is called \emph{regular} if [...]。我告诉他采用后者的做法,并试图解释所谓的“内容和表现分离”的概念,比如“这是一种被广泛接受的工程实践”和“如果你这样做,你不妨使用纯 TeX”,但我的解释没有效果,但他回答我说他只关心输出。

我该如何向他解释这个概念?一个问题是他不懂软件工程或网页设计,我可以从中得到类比。我想,另一个问题是,这个概念在 LaTeX 社区中并不像在 Web 社区中那样广泛使用。

答案1

因此,有了这个逻辑结构的概念,你可以设置如下结构:引文、章节标题、强调的内容、作品标题等等。然后,你不用在写文章时装饰文本,比如斜体、加粗、放大、居中等等,而是说:这是引文、这是章节标题等等。

然后,如果您想改变引号在全局上的外观,您可以通过编辑结构的定义来实现(简单易行),并且您可以保证所有引号看起来都一样,所有章节标题看起来都一样,等等。

因此,你要学会将文档规划为一系列逻辑单元,然后让机器处理每次应用格式的工作。这有利于保持一致性,为你节省了工作量,但也有助于你思考文档中的内容的作用。我认为这应该会引起数学家的共鸣。

现在,这种做法的另一个好处不一定在简单的结构中显而易见,这些结构可能只需要斜体。打字\textit{Harry Potter and the Philosopher's Stone}真的比定义书名命令更难或更麻烦吗?例如:

\newcommand{\work}[1]{\textit{#1}}

然后输入\work{Harry Potter and the Philosopher's Stone}

可能不是。但是如果你有一个复杂的结构,比如节头,你可以把一大堆格式归入一个定义中,理想情况下,这个定义应该有一个有意义的名字。所以,假设我正在写一篇演讲稿,我想用斜体和较小的字体排版可选材料,并在两边缩进。我可以有

\newenvironment{optional}{\begin{quote}\small\em}{\end{quote}}

然后我可以使用

\begin{optional}
  Which leads me on nicely ...
\end{optional}

如果我有十个这样的代码,那么不仅源代码清晰明了(我已经调用了环境optional,所以我知道它的作用),而且还节省了敲代码的时间:

\begin{quote}\small\em
\end{quote}

每次,我都不会忘记将其调小,如果我突然决定将可选内容设置为无衬线字体而不是斜体,我只需进行一次更改,它就会在全球范围内应用。

很多人没有意识到,像 这样的长而繁琐的命令\textit{} \textsuperscript{}并不一定每次都以长格式使用,而是您用来构建命令的构建块,这些命令可以精确地执行您想要的文档中各种结构的命令,输入起来可能会更快,也可能不会更快。这些命令被赋予了名称,使其易于记忆,并且使它们的作用显而易见。这对您自己构建命令很有帮助,但是(即使使用最好的编辑器)如果您每次想要进行一些格式化时都要输入它们,那么在多个正文部分中也会有点麻烦。


我不太懂数学,我觉得这是一个相当牵强的类比,但我觉得这与数学家定义符号或分配某个变量没什么不同。

例如,我可能会说:让从 (2, 3) 到 (3, 6) 的线表示为

然后我可以说,让梯度被表示为

所以我定义了这个对象,然后我继续使用在我的论证中,到处都这样写,而不是每次都写出“从 (2, 3) 到 (3, 6) 的线”。

所以我认为这有点像我定义一个命令

\newcommand{\nb}[1]{{\Large \textbf{#1}}} %Command not recommended due to ugliness

然后\nb{...}在我的整个文档中使用。

怎么会这样?好吧,我认为这就像在开始时给 LaTeX 一个定义,然后每次看到它时,\nb{...}它都知道我的意思是“大而粗体”。但我只需要使用简写\nb{...},而不必每次都输入完整的定义。因此,我不用每次都输入{\Large \textbf{}},而是只需使用\nb{...}我在开始时定义的定义即可。

有点像,我不用每次都写出“从 (2, 3) 到 (3, 6) 的线”,l而是直接使用我在开头定义的。读者就像 LaTeX 一样知道替换我给出的定义,但我节省了打字/书写的量。

答案2

如果看一下问题中给出的示例,就会发现问题的标题是错误的。我们可以通过与 进行比较来讨论语义标记\emph\textit但不能通过与\emph进行比较来讨论语义标记\mathit。这是滥用数学模式来输出应该在文本模式下编写的内容,并且在很多情况下会产生错误的输出。这就像在想要 1 时写 l,或者想要 O 而不是 0。

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
\begin{description}
\item[Accents] $\mathit{Poincaré}$ vs. \emph{Poincaré}
\item[Punctuation] $\mathit{Noether's}$ vs. \emph{Noether's}
\item[More punctuation] $\mathit{:?!,}$ vs. \emph{:?!,}
\item[Quotes] $\mathit{``Gauss''}$ vs. \emph{``Gauss''}
\item[other text fonts] {\sffamily $\mathit{regular}$ vs. \emph{regular}},
{\bfseries $\mathit{regular}$ vs. \emph{regular}}
\end{description}

\end{document}

在此处输入图片描述

相关内容