可访问性 - 使用 lualatex (accsupp) 替代文本

可访问性 - 使用 lualatex (accsupp) 替代文本

我查找了有关如何在 LuLaTeX (1.17.0) 中为图像添加替代文本的不同解决方案。我发现了以下内容解决方案

\documentclass[a4paper,11pt,naustrian]{article}
\usepackage{accsupp}
\usepackage{graphicx}
\begin{document}
    123
\BeginAccSupp{method=escape, ActualText=2. Tag \%4,space}
    \EndAccSupp{}
    \includegraphics{img.png}%
66  
    \BeginAccSupp{method=plain, ActualText=abc\%4,space}
    \includegraphics{img.png}%
\EndAccSupp{}
\end{document}

上述代码存在一些问题:

  1. 我不清楚是否\BeginAccSupp应该\EndAccSupp包含图形。我在文档中没有找到注释。我认为跨页面放置图像可能会很棘手。

  2. 当我阅读文档时,accsupp我读到该方法plain可能会导致无效的 PDF 文件,因为特殊字符不受保护。有人知道什么是特殊字符吗?我在考虑,%但显然这是 PDF 文件中的双重转义:

    ET
    /Span<</ActualText(2.\040Tag\040\\%4)>>BDC
    BT
    

有办法纠正吗?

  1. 阅读文档我也可以使用pdfliteral。但不知何故我没有成功 - 有办法纠正它吗?

    \BeginAccSupp{pdfliteral=direct}
    \pdfextension literal direct{/ActualText(2. Tag \%4)}
    \EndAccSupp{}
    

结束于

/Span<<>>BDC
/ActualText(2. Tag \%4)
ET
EMC
  1. 是使用包选项更好还是自己编码 pdfstring 并使用更好pdfliteral?(一旦我有一个工作样本)

答案1

  1. ActualText 是内容的替代文本,应围绕内容。对于图像来说,这没有问题,因为这是一个框,因此不会跨页。

  2. PDF 参考中描述了文字字符串的语法。除此以外,您还必须转义括号(因为它们用于整个字符串)、反斜杠,并且必须将非 ASCII 字符映射到某个八进制或类似的表示形式。这就是 escape 方法的作用。只要您有 TeX 宏(这包括像 这样的宏\%),使用 pdfstringdef 方法就更安全了。

  3. 如果您想直接使用 \pdfliteral(但请注意,这是 pdftex 特有的,luatex 和 xetex 需要其他命令),您必须在内容之前和之后使用它们。您可以使用它\showoutput来查看 accsupp 到底插入了什么:

.\pdfliteral page{/Span<</ActualText(\(test\))>>BDC}
...\glue(\topskip) 6.28543
...\hbox(4.71457+0.0)x360.0, glue set 327.79163fil
....\hbox(0.0+0.0)x17.0
....\OT1/cmr/m/n/10.95 x
....\OT1/cmr/m/n/10.95 x
....\glue 3.65 plus 1.825 minus 1.21666
....\pdfliteral page{EMC}

附注:不要太相信这个空格选项。如果您使用屏幕阅读器,ActualText 正常工作,但复制粘贴时,您将受到 PDF 阅读器的启发式方法的支配,并且一半的时间它们会忽略该设置。

相关内容