这个帖子描述了一种让 make4ht 获取 LaTeX 源文件并生成包含图像替代文本的 HTML 文件的方法。是否可以使用 make4ht 从 LaTeX 源文件生成包含替代文本的 ODT 文件?如果可以,怎么做?
答案1
TeX4ht 和graphicx
包现在开箱即用地支持替代文本,只需使用alt
keyval 属性:
\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 中的图像属性,带有替代文本设置: