我有以下 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
有关,因此必须选择一个要使用的值为“页面宽度”,而这个值太小了,至少对我来说是这样。html
tex4ht
是否存在一种“TeX 方法”来html
按一定因子缩放输出中的所有图像?
当然,我可以增加latex
源中图像的宽度,但这会很耗时,而且也会造成影响pdf
,这是不可取的。
或者我可以编写一些外部脚本来解析html
输出并操作html
源中的图像大小,但我更喜欢 TeX 限制的解决方案。
有人可能想知道,这个问题源于另一个问题。
更新
鉴于已经过去了很多天却没有得到任何答复,我将向不受 TeX 限制的答案开放这个问题。请参阅下文以了解可能的解决方案。
答案1
采用外部脚本解决方法,其他事宜出现了,幸运的是找到了一个解决方案。基本上,您必须使用一个能够处理您拥有的所有图像格式的配置文件。以下是myconfig.cfg
更新内容,以便处理jpg
、png
和eps
图像格式:
\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
和属性:height
html
#!/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()