make4ht 生成的 ODT 文件中图像的替代文本

make4ht 生成的 ODT 文件中图像的替代文本

这个帖子描述了一种让 make4ht 获取 LaTeX 源文件并生成包含图像替代文本的 HTML 文件的方法。是否可以使用 make4ht 从 LaTeX 源文件生成包含替代文本的 ODT 文件?如果可以,怎么做?

答案1

TeX4ht 和graphicx包现在开箱即用地支持替代文本,只需使用altkeyval 属性:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[alt={my alt text}]{example-image.png}

\includegraphics[]{example-image.png}
\end{document}

它还不支持 ODT 格式,但您可以使用以下配置文件添加支持:

\Preamble{xhtml}
\catcode`\:=11
\makeatletter
\NewConfigure{GraphicsAlt}{1}
\Configure{IMG}
  {% parse the image extension, will be used later
\expandafter\filename@parse\expandafter{\PictureFile}%
\ifx\a:GraphicsAlt\relax%
\Configure{GraphicsAlt}{ALT}%
\fi%
\ifx\Gin@base\@undefined
\let\graphics:filename\PictureFile
\else
\def\graphics:filename{\Gin@base\Gin@ext}
\fi
% \ht:special{t4ht>\PictureFile.4og}%
\ht:special{t4ht>\graphics:filename.4og}%
\ht:special{t4ht*>}%
% \ht:special{t4ht<\PictureFile.4og}%
\ht:special{t4ht<\graphics:filename.4og}%
\OOmanifest{<manifest:file-entry
   manifest:full-path="Pictures/\PictureFile" manifest:media-type="\get:image:mime:type\filename@ext"/>\Hnewline
}%
%
   \ht:special{t4ht=<draw:frame
      draw:name="\PictureFile"
      text:anchor-type="as-char"  % "paragraph"
        % insert image dimension only if they really exist
        \ifx\noBoundingBox\UnDefined
         \ifx\Gin@req@width\undefined\else
         \ifdim\Gin@req@width>0pt
         \string svg:width="\the\Gin@req@width"
          svg:height="\the\Gin@req@height"
        \fi\fi\fi
      draw:z-index="0"
    >%
      <draw:image\Hnewline
         xlink:href="Pictures/}}
  {\ht:special{t4ht=" \Hnewline
         xlink:type="simple"
        xlink:show="embed"
        xlink:actuate="onLoad"
        /><!--draw:name="}}
  {" }
  {\ht:special{t4ht=" }}
  {\ht:special{t4ht=--><svg:title>\a:GraphicsAlt</svg:title></draw:frame>}}
\catcode`\:=12
\makeatother
\begin{document}
\EndPreamble

它重用了 TeX4ht 源中的图像绘制代码,仅添加了几行:

\ifx\a:GraphicsAlt\relax%
\Configure{GraphicsAlt}{ALT}%
\fi%

alt定义\a:GraphicsAlt宏。如果命令中未使用键\includegraphics,则它定义了默认值ALT

替代文本本身包含在此代码中:

  {\ht:special{t4ht=--><svg:title>\a:GraphicsAlt</svg:title></draw:frame>}}

以下是 LO 中的图像属性,带有替代文本设置:

在此处输入图片描述

相关内容