第一的:我知道以前有人问过这个问题:
- 如何创建支持通用辅助功能和重排的标记 PDF?(2010 年 6 月)
- LaTeX 可访问性(2011 年 5 月)
- 可访问性问题(2012 年 10 月)
- 重新审视从 LaTeX 生成结构化 PDF(2013 年 6 月)
自这些问题出现以来,已经有几个关于可访问性和 LaTeX 的问题被关闭了。
我也知道罗斯·莫尔的论文自 2009 年起他在 2010 年的演讲。
问题依然是: 是否可以制作可使用 LaTeX 访问的 PDF 文件?
我理解人们可以对什么有不同意见无障碍意思是。不同的国家/地区会有不同的(法律)定义。我对不同国家如何理解无障碍很感兴趣,但对于这个问题,我主要关注的是美国的背景。在这里,我认为 1990 年《美国残疾人法案》(ADA)/第 508 条定义了什么是无障碍内容。更具体地说,我认为能够使用屏幕阅读器(如 JAWS)阅读 PDF 文件。具体来说,希望创建可在大学课堂环境中使用的 pdf 文件,因为联邦法律要求内容是无障碍的。这是一个真正的问题(例如)。
检查 PDF 文件是否可访问的标准方法似乎是使用 Adobe Pro 的可访问性检查器。例如,这可以显示文档是否被标记。但似乎还需要使用屏幕阅读器进行实际测试,以确保一切符合要求。
现在使用 pdfLaTeX 并使用 Adobe Pro 的可访问性检查器进行检查时,我通常会遇到两个错误:
- 该页面缺乏语言规范,并且
- 没有标签。
我希望过去两年在这方面有所进展。尽管我经常使用 LaTeX,但我仍然认为自己只是个普通用户。过去的答案似乎指出有办法做到这一点,但我找不到用英语编写的用户友好指南。我检查了一些用屏幕阅读器读取文本的文档,但问题似乎出在数学内容上。
据我所知,创建真正可访问的 PDF 文件是不可能的。如果这是真的,我想知道:
问题:目前创建可访问 PDF 文件的最佳做法是什么?是否有用户友好的指南?
我也知道这个答案(从 2014 年 8 月开始):
https://tex.stackexchange.com/a/194226/5870
这里在评论中指出,创建的 PDF 文件未通过 Adobe 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
答案3
这个答案提出了我认为最有效的提高 LaTeX 文档可访问性的方法。不幸的是,它需要使用 R 和 Adobe 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:运行 Adobe Acrobat 脚本
最后一步需要 Adobe Acrobat Pro。打开第二步生成的 PDF 文件并执行此 Acrobat 脚本。只需打开可访问性序列如果安装了 Acrobat,则该文件会显示为空。您可以访问以下位置的脚本工具-->动作向导对于那些管理多个文档的人来说,Acrobat 提供了简单的批处理功能,您可以将其应用于可访问性序列命令。
结果
完成所有三个步骤后,您的文档将比原始文档更接近 508 合规性针织品输出。在处理后剩下的四个问题中,逻辑阅读顺序和颜色对比总是需要人工判断,标题只需点击两次即可固定,最后标题嵌套可以跳过规则根据 Adobe具体来说,他们表示,“WCAG 并不要求标题的顺序,而只是一种建议技术。”