步骤 1:使用 RMarkdown 生成 TeX 输出

步骤 1:使用 RMarkdown 生成 TeX 输出

第一的:我知道以前有人问过这个问题:

自这些问题出现以来,已经有几个关于可访问性和 LaTeX 的问题被关闭了。

我也知道罗斯·莫尔的论文自 2009 年起他在 2010 年的演讲


问题依然是: 是否可以制作可使用 LaTeX 访问的 PDF 文件?

我理解人们可以对什么有不同意见无障碍意思是。不同的国家/地区会有不同的(法律)定义。我对不同国家如何理解无障碍很感兴趣,但对于这个问题,我主要关注的是美国的背景。在这里,我认为 1990 年《美国残疾人法案》(ADA)/第 508 条定义了什么是无障碍内容。更具体地说,我认为能够使用屏幕阅读器(如 JAWS)阅读 PDF 文件。具体来说,希望创建可在大学课堂环境中使用的 pdf 文件,因为联邦法律要求内容是无障碍的。这是一个真正的问题(例如)。

检查 PDF 文件是否可访问的标准方法似乎是使用 Adob​​e Pro 的可访问性检查器。例如,这可以显示文档是否被标记。但似乎还需要使用屏幕阅读器进行实际测试,以确保一切符合要求。

现在使用 pdfLaTeX 并使用 Adob​​e Pro 的可访问性检查器进行检查时,我通常会遇到两个错误:

  • 该页面缺乏语言规范,并且
  • 没有标签。

我希望过去两年在这方面有所进展。尽管我经常使用 LaTeX,但我仍然认为自己只是个普通用户。过去的答案似乎指出有办法做到这一点,但我找不到用英语编写的用户友好指南。我检查了一些用屏幕阅读器读取文本的文档,但问题似乎出在数学内容上。

据我所知,创建真正可访问的 PDF 文件是不可能的。如果这是真的,我想知道:

问题:目前创建可访问 PDF 文件的最佳做法是什么?是否有用户友好的指南?

我也知道这个答案(从 2014 年 8 月开始):

https://tex.stackexchange.com/a/194226/5870

这里在评论中指出,创建的 PDF 文件未通过 Adob​​e Pro 中的可访问性检查器。此外,实际上必须编辑.sty所使用的文件。(我仍然认为这是一个很好的答案!)此外,该文件可能是为德语环境创建的(但仍可能具有国际用途?)

答案1

可访问性要求在 PDF 中进行多项设置。其中一些设置相当容易实现(例如,应设置标题和语言),其他设置则比较困难。最困难的部分是要求 PDF 应“标记”,这意味着它包含结构信息。

LaTeX 团队已启动一个多年项目“标记 PDF”,以允许 LaTeX 创建此类标记 PDF。有关该项目的详细信息,请访问 https://www.latex-project.org/news/2020/11/30/tagged-pdf-FS-study/

该项目的当前状态是可以自动标记段落和链接。这需要当前的 LaTeX、当前版本pdfmanagement-testphase和当前版本的实验研究包tagpdf(目前仍是 lualatex):

\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{uncompress,pdfversion=2.0}

\documentclass{book}
\usepackage{tagpdf}
\tagpdfsetup{activate,paratagging,interwordspace}
\usepackage{hyperref,lipsum}
\begin{document}

Tagged project: \url{https://www.latex-project.org/news/2020/11/30/tagged-pdf-FS-study/}

\lipsum[1-4]

\end{document}

PDF 的结构(编译两次)可以在以下位置检查:https://ngpdf.com

其他结构元素也可以标记,但这必须手动完成(或通过修补命令)。下一个任务是向部分和列表等基本结构添加自动标记。

即将召开的 TUG 会议将会讨论该项目的进展情况 https://www.tug.org/tug2021/index.html

2023 年 4 月更新

随着最新的 latex-dev 版本的发布,更多标记相关的测试代码已经发布https://www.latex-project.org/news/2023/03/13/latex-dev-1/。现在这里可以标记

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

\begin{document}

\tableofcontents 
\section{section}
\subsection{Subsection}%

some text with a \footnote{a footnote}

\begin{enumerate}
\item a list
 \begin{itemize}
  \item more list
 \end{itemize}
\end{enumerate}

\begin{verbatim}
some verbatim
some verbatim
\end{verbatim}

inline math $a=b$

display math
\begin{equation}
x=y
\end{equation}
\end{document}      

图形标记正在开发中(github 中已经有分支),浮点数也很快会得到处理。随着 6 月的发布,应该可以标记大多数标准命令。

2024 年 2 月更新

随着 2023 年 6 月和 11 月最新版 LaTeX 的发布,添加了对图形、浮点数和基本表格的支持。2024 年 2 月最新版 LaTeX-dev 修正了各种问题,并添加了对 marginpar(在第三阶段自动加载)的支持,用于\maketitle(目前必须明确加载为title模块)。该math模块经过重新设计和扩展,现在包含用于半自动附加方程式数学表示的代码。它现在还可以处理 amsmath\text命令(但一些内部使用的其他命令\mathchoice仍然开放,可能会导致结构错误)。一些已使用新代码标记的示例位于https://github.com/latex3/tagging-project/discussions/56

总之,这意味着(除了环境之外tabbing)Leslie Lamport 手册中描述的几乎所有内容现在都可以被标记。

各种模块的文档可以在 中找到texdoc -l latex-lab。它们描述了选项,也描述了限制和未解决的问题。

我们创建了一个专门用于问题、讨论和反馈的存储库:https://github.com/latex3/tagging-project

答案2

答案似乎隐藏在这张纸制作符合 ADA 标准的 PDF。看看这个项目!

更新:我花了很多时间尝试将此工具与复杂的自定义类结合使用,因此我想降低期望。虽然 accessibility.sty 包对于简单文档来说是一个有用的工具,但它与多个包和命令不兼容。该包的一个改进版本称为accessibility_meta,可用这里

即使更新后的软件包也并不完美。例如,既不能与软件包“fancyhdr”配合使用,也不能与“\setlist”等简单命令配合使用。

更新 2:该accessibility.sty软件包现在在 CTAN, 但仍有问题

答案3

这个答案提出了我认为最有效的提高 LaTeX 文档可访问性的方法。不幸的是,它需要使用 R 和 Adob​​e Acrobat。我以前的方法只涉及使用 Babett Schaltz 的 accessibility.sty 的修改版本。(Schaltz 在 2007 年德国博士论文中创建了它。)尽管对原始 .sty 文件进行了数百次修改,但每次 MikTeX 更新都会出现新的不兼容性,这促使我改用当前的方法。

第一步是针织RMarkdown 文件,但是将以下命令添加到标准 LaTeX 文档的标题中将允许您从第二步开始进行操作。

\RequirePackage{accsupp}
\RequirePackage{pdfcomment}
\newcommand{\AccTool}[2]{\BeginAccSupp{method=pdfstringdef,unicode,Alt={{#1}}}\pdftooltip{{#2}}{{#1}}\EndAccSupp{}}

步骤 1:使用 RMarkdown 生成 TeX 输出

单击此文本可访问示例 Rmd 文件或点击下载所有内容这里。此文件与普通 Rmd 之间的第一个区别是 YAML。字体大小命令会执行您期望的操作。keep_tex命令确保我们可以访问第二步的中间文件。最后,header_includes命令将所需的 LaTeX 代码添加到标题中。

fontsize: 11pt
output:
  pdf_document:   
    keep_tex: yes
header-includes:
   - \RequirePackage{accsupp}
   - \RequirePackage{pdfcomment}
   - \newcommand{\AccTool}[2]{\BeginAccSupp{method=pdfstringdef,unicode,Alt={{#1}}}\pdftooltip{{#2}}{{#1}}\EndAccSupp{}}

第 2 步:修改 TeX

这个文件将修改第一步中的 TeX 输出。它使用 R 的子集命令将工具提示和辅助功能标签添加到文档中。可以设计巧妙的正则表达式来捕获辅助功能标签的标题文本。要学习正则表达式访问此网站。我使用了这个文件的大约 100 行的变体,向其中添加了 1000 多个标签218页的文档

脚本的最后一行使用texi2pdf命令生成PDF文件。

步骤 3:运行 Adob​​e Acrobat 脚本

最后一步需要 Adob​​e Acrobat Pro。打开第二步生成的 PDF 文件并执行此 Acrobat 脚本。只需打开可访问性序列如果安装了 Acrobat,则该文件会显示为空。您可以访问以下位置的脚本工具-->动作向导对于那些管理多个文档的人来说,Acrobat 提供了简单的批处理功能,您可以将其应用于可访问性序列命令。

结果

完成所有三个步骤后,您的文档将比原始文档更接近 508 合规性针织品输出。在处理后剩下的四个问题中,逻辑阅读顺序颜色对比总是需要人工判断,标题只需点击两次即可固定,最后标题嵌套可以跳过规则根据 Adob​​e具体来说,他们表示,“WCAG 并不要求标题的顺序,而只是一种建议技术。”

可访问性检查

请注意图中的替代文本工具提示: 在此处输入图片描述

相关内容