使用 tex4ht 旋转文本

使用 tex4ht 旋转文本

我想旋转表格中的文本,这在生成 pdf 文档时可以正常工作,但在使用 tex4ht 时则不行。有办法解决这个问题吗?

梅威瑟:

\documentclass{book}
\usepackage{mwe}

\begin{document}

\rotatebox{90}{text}

\end{document}

答案1

我们可以使用 CSStransform属性和rotate()函数来旋转 HTML 中的框。您可以尝试以下配置文件graphicx.4ht

% graphicx.4ht (2017-10-21-16:16), generated from tex4ht-4ht.tex
% Copyright 2003-2009 Eitan M. Gurari
% Copyright 2009-2017 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\immediate\write-1{version 2017-10-21-16:16}

   \let\Gin:esetsize\Gin@esetsize
\def\Gin@esetsize{%
   \ifx \Gin@ewidth\Gin@exclamation
      \let\Gin:ewidth\Gin@ewidth
   \else
      \setlength\tmp:dim\Gin@ewidth
      \edef\Gin:ewidth{\the\tmp:dim}%
   \fi
   \ifx \Gin@eheight\Gin@exclamation
      \let\Gin:eheight\Gin@eheight
   \else
      \setlength\tmp:dim\Gin@eheight
      \edef\Gin:eheight{\the\tmp:dim}%
   \fi
   \Gin:esetsize
}
\DeclareGraphicsRule{.png}{bmp}{.xbb}{}
\DeclareGraphicsRule{.jpg}{bmp}{.xbb}{}
\DeclareGraphicsRule{.gif}{bmp}{.xbb}{}
\DeclareGraphicsRule{.pdf}{bmp}{.xbb}{}
\DeclareGraphicsRule{.svg}{bmp}{.xbb}{}

\NewConfigure{rotatebox}{2}
\pend:def\Grot@box{\a:rotatebox}
\append:def\Grot@box{\b:rotatebox}

\Configure{rotatebox}{\HCode{<span class="rotatebox" style="transform: rotate(-\Grot@angle deg);">}}{\HCode{</span>}}
\Css{.rotatebox{
  display: inline-block;}}

\Hinput{graphicx}
\endinput

重要的代码如下:

\NewConfigure{rotatebox}{2}
\pend:def\Grot@box{\a:rotatebox}
\append:def\Grot@box{\b:rotatebox}

\Configure{rotatebox}{\HCode{<span class="rotatebox" style="transform: rotate(-\Grot@angle deg);">}}{\HCode{</span>}}
\Css{.rotatebox{
  display: inline-block;}}

已声明新tex4ht配置,rotatebox并且已将配置挂钩插入命令\Grot@box,用于绘制旋转框。然后配置挂钩以插入<span class="rotatebox">具有style="transform: rotate(-\Grot@angle deg);"CSS 样式的元素。此样式启用旋转。\Grot@angle命令包含旋转角度,由于某种原因,CSS 中该角度必须为负数。

以下 TeX 代码:

\documentclass{book}
\usepackage{mwe}

\begin{document}

normal text
\rotatebox{90}{text}
\rotatebox{190}{some longer text}
normal text continues

\end{document}

在 HTML 中将以这种方式呈现:

在此处输入图片描述

在 PDF 中,它看起来有点不同:

在此处输入图片描述

问题是,当我尝试使用不同于中心的旋转点时,事情开始出错,所以我认为这是我们能得到的最好的结果。

编辑:

如果您的 Epub 阅读器不支持旋转(这恰恰证明了电子书的支持仍然很差),您可以将旋转的文本转换为图像。尝试以下配置文件:

\Preamble{xhtml,svg}
\Configure{rotatebox}{\Picture+{}}{\EndPicture}
\begin{document}
\EndPreamble

结果:

在此处输入图片描述

相关内容