Accessibiliy Features » Historie » Version 33
Maren Pufe, 30.04.2025 07:48
| 1 | 1 | Patrick Schulz | h1. Accessibiliy Features |
|---|---|---|---|
| 2 | |||
| 3 | 20 | Patrick Schulz | {{>toc}} |
| 4 | |||
| 5 | 5 | Patrick Schulz | h2. Activate Accessibility Features |
| 6 | |||
| 7 | 28 | Patrick Schulz | Add @a11y@ to the @\documentclass@ options: |
| 8 | 25 | Robert Hecht | <pre><code>\documentclass[…,a11y]{cocotex} |
| 9 | 1 | Patrick Schulz | </code></pre> |
| 10 | For PDF 2.0 use @a11y20@, instead. |
||
| 11 | 28 | Patrick Schulz | |
| 12 | Make sure that the "env.sh":https://github.com/transpect/xerif-latex/blob/main/env.sh (part of the "xerif-latex":https://github.com/transpect/xerif-latex/tree/main repo) is sourced or that the Makefile includes the parameters defined this script. This is necessary so TeX finds the lua files from the @ltpdfa@ package. |
||
| 13 | 25 | Robert Hecht | |
| 14 | h2. Set main language |
||
| 15 | |||
| 16 | 27 | Robert Hecht | Add @lang-id=XXX@ to the documentclass options following "ISO 639-2":https://de.wikipedia.org/wiki/Liste_der_ISO-639-2-Codes, e.g. for German: |
| 17 | 25 | Robert Hecht | <pre><code>\documentclass[…,lang-id=deu]{cocotex} |
| 18 | </code></pre> |
||
| 19 | 5 | Patrick Schulz | |
| 20 | 21 | Maren Pufe | h2. Artifact tagging |
| 21 | |||
| 22 | Images and other contents that fulfill decorational purposes only must be tagged as artifacts to be ignored by reading software. This can be achieved as follows: |
||
| 23 | |||
| 24 | <pre><code class="tex"> |
||
| 25 | \ccaStructStart{Artifact}Linie\ccaStructEnd{Artifact} |
||
| 26 | </code></pre> |
||
| 27 | |||
| 28 | * there exists also an environment that is not yet thoroughly tested: |
||
| 29 | |||
| 30 | <pre><code class="tex"> |
||
| 31 | \begin{ccaArtifact}…\end{ccaArtifact} |
||
| 32 | </code></pre> |
||
| 33 | |||
| 34 | * consider tagging *decorational images* |
||
| 35 | * *writing lines* (if not tagged as forms) |
||
| 36 | * tbc |
||
| 37 | |||
| 38 | 6 | Patrick Schulz | h2. Paragraph tagging |
| 39 | 1 | Patrick Schulz | |
| 40 | 22 | Patrick Schulz | Until further notice, text paragraphs need to be tagged by the converter by adding @\ccaVstructStart{P}@ at the beginning of each paragraph (no whitespaces between the macro and subsequent text or other macros!) and @\ccaVstructEnd{P}@ at the end of each paragraph (no whitespaces before @\ccaVstructEnd@!): |
| 41 | 6 | Patrick Schulz | <pre> |
| 42 | 22 | Patrick Schulz | \ccaVstructStart{P}Ipsum Lorem … finis.\ccaVstructEnd{P} |
| 43 | 6 | Patrick Schulz | </pre> |
| 44 | |||
| 45 | 31 | Maren Pufe | This must also be done in broader contexts that may(!) contain multiple paragraphs of plain text, like |
| 46 | * footnotes, |
||
| 47 | * captions, |
||
| 48 | * bibliographic references, |
||
| 49 | * list items, |
||
| 50 | * quotations, |
||
| 51 | * table cells or |
||
| 52 | * abstracts. Which ones exactly varies from publisher style to publisher style, so if in doubt, ask your friendly neighborhood TeX developer. |
||
| 53 | 6 | Patrick Schulz | |
| 54 | 7 | Patrick Schulz | h2. Alternative Texts |
| 55 | |||
| 56 | 8 | Patrick Schulz | Figures and Math both need alternative texts. |
| 57 | 7 | Patrick Schulz | |
| 58 | h4. Figures |
||
| 59 | |||
| 60 | For figures, there are two ways to encode alt-text: the @alt@ Parameter in the optional argument of @\includegraphics@ (needs texlive > 2021), e.g. |
||
| 61 | <pre>\incudegraphics[...,alt={This is what the image file shows}]{image.png}</pre> |
||
| 62 | or as @\tpAltText@ inside the @tpFigure@ or @tpSubFloat@ environments: |
||
| 63 | <pre>\begin{tpFigure} |
||
| 64 | \tpCaption{This is the caption} |
||
| 65 | \tpAltText{This is the alt text. It MUST NOT be the same as the caption!} |
||
| 66 | \tpFig{\includegraphics{image.png}} |
||
| 67 | 10 | Patrick Schulz | \end{tpFigure}</pre>If both exist, the @alt@ in @\includegraphics@ takes precedence over the @\tpAltText@. |
| 68 | 7 | Patrick Schulz | |
| 69 | h4. Math |
||
| 70 | |||
| 71 | both inline and display style math needs alternative texts. This is done with the @\ccaAddAltText@ macro: |
||
| 72 | 33 | Maren Pufe | <pre><code class="tex"> |
| 73 | 7 | Patrick Schulz | \begin{equation*}\ccaAddAltText{Z equals x minus mu divided by sigma}% |
| 74 | \mathbf{Z}=\,\frac{\boldsymbol{x}-\mathbf{\mu }}{\mathbf{\sigma }} |
||
| 75 | 1 | Patrick Schulz | \end{equation*} |
| 76 | 33 | Maren Pufe | </code></pre> |
| 77 | |||
| 78 | 7 | Patrick Schulz | or, for inline math: |
| 79 | 33 | Maren Pufe | <pre><code class="tex">The Variable \ccaStructStart{Formula}$x\addAltText{x}$\ccaStructEnd{Formula} means...</code></pre> |
| 80 | 1 | Patrick Schulz | |
| 81 | 32 | Maren Pufe | or |
| 82 | |||
| 83 | 33 | Maren Pufe | <pre><code class="tex">The Variable\(x\ccaAddAltText{alternative text}\).</code></pre> |
| 84 | 32 | Maren Pufe | |
| 85 | 33 | Maren Pufe | (in \(...)\ tagging is already included). |
| 86 | 32 | Maren Pufe | |
| 87 | 1 | Patrick Schulz | h2. XMP Meta Data |
| 88 | 11 | Patrick Schulz | |
| 89 | 30 | Patrick Schulz | _(see [[XMP Meta Data]])_ |
| 90 | 17 | Patrick Schulz | |
| 91 | h2. Colours and Embedded Images |
||
| 92 | |||
| 93 | 18 | Patrick Schulz | h3. Output Intent and Embedded ICC Colour Profiles |
| 94 | |||
| 95 | By default, CoCoTeX puts **CMYK** as output intent, but this can be overridden with the @color-env@ class option: |
||
| 96 | <pre><code class="latex">\documentclass[…,color-env=<space>,…]{cocotex}</code></pre>The Value @<space>@ should be one of the values in the left column of the following table: |
||
| 97 | |||
| 98 | |_. @<space>@ |_. icc profile| |
||
| 99 | | @srgb@, @rgb@ | IEC 61966-2.1 Default RGB colour space - sRGB | |
||
| 100 | | @cmy@, @cmyk@ | Coated FOGRA39 | |
||
| 101 | | @grey@, @gray@ | ISO Coated v2 - GREY 1c - (basICColor) | |
||
| 102 | | @natural@, @none@ | (gray) | |
||
| 103 | |||
| 104 | Publisher-wide colour profile can be set with the @profile@ Property of the @titlepage@ Container:<pre><code class="latex">\ccAddToType{Properties}{titlepage}{% |
||
| 105 | \ccSetProperty{output-intent}{% |
||
| 106 | profile=<path to .icc file>;% |
||
| 107 | components=<number of colour components>;% |
||
| 108 | identifier=<name of colour profile>% |
||
| 109 | }}</code></pre>with the following values: |
||
| 110 | * @<path to .icc file>@ is the path to the icc colour profile relative to the .tex file, including the file extension. |
||
| 111 | * @<number of colour components>@ is the number of colour components, e.g., @3@ for RGB, @4@ for CMYK, etc. |
||
| 112 | * @<name of colour profile>@ is the name of the colour profile (default values correspond to the right column in above's table) |
||
| 113 | |||
| 114 | A custom .icc profile valid only for the current document can be embedded with the following Components inside the @tpMeta@ environment:<pre><code class="latex">\begin{tpMeta} |
||
| 115 | … |
||
| 116 | \tpIccProfileFile{<path to .icc file>} |
||
| 117 | \tpIccComponents{<number of colour components>} |
||
| 118 | \tpIccIdentifier{<name of colour profile>} |
||
| 119 | … |
||
| 120 | \end{tpMeta}</code></pre> |
||
| 121 | |||
| 122 | h3. Image files |
||
| 123 | 1 | Patrick Schulz | |
| 124 | 19 | Patrick Schulz | The colour spaces of embedded images **must match the Output Indent of the PDF file** for the latter to be PDF/A2-a compatible. |
| 125 | 18 | Patrick Schulz | |
| 126 | A quick-and-dirty conversion can be done with imagemagick:<pre><code class="bash">magick <input> -colorspace <color_space> -profile <path_to_icc> <output></code></pre>with |
||
| 127 | * @<input>@ the path to the input image |
||
| 128 | * @<color_space>@ the color space the image should be converted to (cmyk, rgb, etc) |
||
| 129 | * @<path_to_icc>@ the path to the icc profile that gets embedded into the image |
||
| 130 | * @<output>@ the name of the output image |
||
| 131 | |||
| 132 | h3. Custom Text Colours |
||
| 133 | 17 | Patrick Schulz | |
| 134 | Custom document colours get automatically converted to the Output Intent color space by LaTeX, so they may be defined with any color model. The following colour definitions are roughly equivalent:<pre><code class="latex">\definecolor{myblue}{HTML}{3527FF} |
||
| 135 | \definecolor{myblue}{RGB}{53,39,255} |
||
| 136 | \definecolor{myblue}{rgb}{0.21,0.15,1} |
||
| 137 | \definecolor{myblue}{cmyk}{0.79,0.85,0,0}</code></pre> |
||
| 138 | 24 | Marcus Hottenroth | |
| 139 | h2. Checking PDF/UA compliance on Linux |
||
| 140 | |||
| 141 | The main tool for validating the PDF/UA compliance of documents is the "PDF Accessibility Checker (PAC)":https://support.axes4.com/hc/de/articles/7371921627794-PDF-Accessibility-Checker-PAC-2024. Using it on Windows is rather straightforward but requires a few more steps to make it run on Linux. The following procedure has been tested successfully with Wine 7.0 and should work with later versions quite as well. |
||
| 142 | |||
| 143 | # Install <code>wine</code> and <code>winetricks</code> via your package manager. Ensure that it is at least Wine version 7.0. |
||
| 144 | # It is recommended to use a separate Wine prefix (i.e. a separate environment with its own configuration and installed Windows components/packages). To do so, issue <code>WINEPREFIX=~/.wine-pac wineboot --init</code>. The path <code>~/.wine_pac</code> is an example and may be replaced with a path to your liking. |
||
| 145 | # Install all fonts available for Wine (<code>corefonts</code> package won’t suffice) as well as .NET 4.8 by issuing <code>WINEPREFIX=~/.wine-pac winetricks --force dotnet48 allfonts</code>. The <code>--force</code> option is required, because <code>winetricks</code> will otherwise quit the installation with a warning, stating that the .NET 4.8 package may be broken since Wine release 5.0. |
||
| 146 | # After the installation routines of the aforementioned Windows software via Wine, you should now be able to run PAC via <code>WINEPREFIX=~/.wine-pac wine "/Path/to/your/PAC_directory/PAC.exe". |