htlatex html 输出(仅限)中图像的全局缩放

htlatex html 输出(仅限)中图像的全局缩放

我有以下 MWE 和一些图像:

\documentclass{book}
\usepackage{graphicx}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipisici elit:

\begin{centering}
\includegraphics[width=0.5\textwidth]{myimage.jpg}
\includegraphics[width=1.0\textwidth]{myimage.jpg}
\end{centering}
\end{document}

pdflatex myfile.tex编译后输出结果与预期一致pdf,其中一个图像的宽度为文本宽度的一半,另一个图像的宽度与文本相同。然后,​​使用以下配置文件(需要获取具有正确相对大小的图像):

\Preamble{xhtml}
\Configure{graphics*}
    {jpg}
    {\Picture[pict]{\csname Gin@base\endcsname .jpg
        \space width="\expandafter\the\csname Gin@req@width\endcsname"}}
\begin{document}
\EndPreamble

我用 编译了相同的源代码htlatex myfile myconfig,以便获得我的文档的一个版本。图像大小本身是正确的,但与文本大小相比太小了。我猜这与没有固定的页面宽度html有关,因此必须选择一个要使用的值为“页面宽度”,而这个值太小了,至少对我来说是这样。htmltex4ht

是否存在一种“TeX 方法”来html按一定因子缩放输出中的所有图像?

当然,我可以增加latex源中图像的宽度,但这会很耗时,而且也会造成影响pdf,这是不可取的。

或者我可以编写一些外部脚本来解析html输出并操作html源中的图像大小,但我更喜欢 TeX 限制的解决方案。

有人可能想知道,这个问题源于另一个问题

更新

鉴于已经过去了很多天却没有得到任何答复,我将向不受 TeX 限制的答案开放这个问题。请参阅下文以了解可能的解决方案。

答案1

采用外部脚本解决方法,其他事宜出现了,幸运的是找到了一个解决方案。基本上,您必须使用一个能够处理您拥有的所有图像格式的配置文件。以下是myconfig.cfg更新内容,以便处理jpgpngeps图像格式:

\Preamble{xhtml}
\Configure{graphics*}
    {jpg}
    {\Picture[pict]{\csname Gin@base\endcsname.jpg
        \space width="\expandafter\the\csname Gin@req@width\endcsname"}}
\Configure{graphics*}
    {png}
    {\Picture[pict]{\csname Gin@base\endcsname.png
        \space width="\expandafter\the\csname Gin@req@width\endcsname"}}
\Configure{graphics*}
    {eps}
    {\Needs{"convert -density 110x110 \csname Gin@base\endcsname.eps \csname Gin@base\endcsname.png"}
    \Picture[pict]{\csname Gin@base\endcsname.png
        \space width="\expandafter\the\csname Gin@req@width\endcsname"}}
\begin{document}
\EndPreamble

下面是我的后期制作 Python 脚本,能够乘以源中图像的因子width和属性:heighthtml

#!/usr/bin/python
# usage under Ubuntu 12.04 with Python 3.2: python3 fixhtml.py my_html
# requirement: my_html file is expected to be UTF-8 encoded text file

import sys,re
import os.path

if len(sys.argv)!=2:
    print("You need to specify the HTML file you want to process when you call 'fixhtml'. Try again.")
    sys.exit()
fn=sys.argv[1]
if not os.path.exists(fn):
    print("The file you specified ('"+fn+"')was not found.")
    sys.exit()

print("Processing HTML file '"+fn+"'...")
f=open(fn,'r',encoding="utf-8")
htmltext=f.read()
f.close()

def fixall(text,searchpatt,subpatt,factor,factor_group):
    m=re.search(searchpatt,text)
    fixed_text=''
    while m:
        value=m.group(factor_group)
        new_value=factor*float(value)
        fixed_text+=re.sub(searchpatt,subpatt%new_value,text[:m.end()])
        text=text[m.end():]
        m=re.search(searchpatt,text)
    return fixed_text+text

factor=2.0 # images enlargement factor
factor_group=2 # factor is found in second group of regex search expression
htmltext=fixall(htmltext,'(?ms)img(.+?)width.*?=.*?"([^"a-zA_Z]+)([a-z]{1,3})"',r'img\1width="%.4f\3"',factor,factor_group) # change the last 3 arguments to suit your needs
htmltext=fixall(htmltext,'(?ms)img(.+?)height.*?=.*?"([^"a-zA_Z]+)([a-z]{1,3})"',r'img\1height="%.4f\3"',factor,factor_group) # each line one passage: add as many you want

import codecs
f = codecs.open("fixed_"+fn,'w',encoding='utf8') # output file name is the same as input with the prefix 'fixed_', file is overwritten if existing
f.write(htmltext)
f.close()

相关内容