在 pdf 中显示实际的数学源代码

在 pdf 中显示实际的数学源代码

我班上有一位几乎失明的学生,他很难读懂许多数学符号,例如上标或下标 ($M_1$、$K^3$)。他已经学会了阅读 latex 源代码,这对他来说更容易阅读。为此,我需要所有文档的第二份副本,其中 latex 数学源代码不是编译的,而是作为 pdf 中的输出生成的。例如,他的练习应该是这样的

令 g_1 和 g_2 为 \mathbb{R}^2 中的两条线。

而不是让 $g_1$ 和 $g_2$ 成为 $\mathbb{R}^2$ 中的两条线。

或者

证明 \sum_{i=1}^nn = \frac{n(n+1)}{2}。

而不是证明 $\sum_{i=1}^nn = \frac{n(n+1)}{2}$。

有没有一种简单的方法可以告诉 TeX 简单地忽略数学模式分隔符,而是只输出文件中的实际 tex 代码,而不会产生数十条错误消息?

答案1

对于简单的内联数学,您可以定义一个命令\mymath,该命令对数学和代码模式有两种不同的定义。使用包打印代码listings

代码

\documentclass{article}

\usepackage{listings}
\lstset{
    language = [LaTeX]{TeX},
    basicstyle=\small\ttfamily,
}

%\NewDocumentCommand{\mymath}{ m }{\ensuremath{#1}}% show math
\NewDocumentCommand{\mymath}{ v }{\lstinline|#1|}% show code

\begin{document}

\mymath{a^2 = b^2 + c^2}

\mymath{e = mc^2}

\mymath{\sum_{i=1}^n n = \frac{n(n+1)}{2}}

\end{document}

结果

在此处输入图片描述

答案2

好吧,我们开发的(实验性的!)数学抓取代码几乎可以正常工作:

\DocumentMetadata{testphase=math}
\documentclass{article}
\ExplSyntaxOn
\math_processor:n
  {
    \texttt{\detokenize{#2}}\quad
  }
\ExplSyntaxOff
\begin{document}

Show that $\sum_{i=1}^n n = \frac{n(n+1)}{2}$

\end{document}

在此处输入图片描述

只需要扩展代码就可以丢弃打印的输出。

请注意,抓取代码需要最新的 LaTeX(甚至可能是 latex-dev),它还不能在所有数学环境中使用,而且很可能仍有错误。问题应报告在https://github.com/latex3/tagging-project

另外,您可以尝试标记 PDF。这将添加源代码作为替代文本:

\DocumentMetadata{testphase={phase-III,math}}
\documentclass{article}
\begin{document}

Show that $\sum_{i=1}^n n = \frac{n(n+1)}{2}$

\end{document}

请注意,标记仅适用于一组受限的软件包。同样,可以在 github 上报告问题(包括实际可用时的反馈)。

相关内容