
Quando introduzo gráficos com \includegraphics[width=0.5\textwidth]{fig}
, o tex4ht processa isso em um certo número de pixels (não tenho certeza de como - provavelmente há uma configuração de ppi que não encontrei?) e produz um <img src="..." width="276" height="276">
, por exemplo, mas o que pareceria natural para mim seria, dizer, <img src="..." style="width: 50%;">
.
Houve uma espécie de questão semelhante anteriormente - emesta resposta, michal.h21 dá um exemplo onde essas larguras aparecem como "276pt" (ou similar), mas
(1) não vejo isso quando compilo um teste - apenas vejo números, que entendo que deveriam estar em px - - embora, é claro, essa resposta demorasse 6 anos;
(2) de qualquer maneira, isso não parece ser um HTML legal; e
(3) nem os valores px nem pt são dimensionados com a janela de visualização (ou, talvez mais pertinentemente, com o tamanho estilizado da figura circundante).
Então isso me leva à pergunta: existe uma maneira de usar diretamente tamanhos de imagem relativos com tex4ht?
Responder1
Editar: O código abaixo agora está integrado às fontes TeX4ht, você pode solicitá-lo usando a Gin-percent
opção. Pode levar algum tempo para ser incluído no TeX Live.
Essa resposta vinculada é muito antiga e obsoleta. Você pode usar \Configure{Gin-dim}
o comando para alterar a forma como as dimensões da imagem são calculadas agora. Por padrão, o TeX4ht depende de informações sobre as dimensões da imagem fornecidas pelo pacote Graphics. Portanto, se você usar dimensões explícitas (como width=0.5\textwidth
), a dimensão real calculada pelo TeX será usada.
Um problema é que se você definir apenas uma dimensão, por exemplo largura, a outra dimensão será definida com o mesmo valor. Você geralmente não quer isso, a menos que sua imagem seja um quadrado. Para obter o valor correto para todas as dimensões, o Graphics usa um .xbb
arquivo de imagem. Ele pode ser criado usando o seguinte comando:
ebb -x *.jpg
Execute um comando análogo para todos os outros formatos de imagem suportados que você usa. Isso garantirá que os valores corretos sejam usados para dimensões calculadas implicitamente.
Agora, para sua pergunta real. Graças ao projeto LaTeX 3, agora podemos usar o l3fp
pacote para calcular as dimensões da imagem em porcentagens. É muito mais fácil de usar do que \dimexpr
o comando, que tem muitas limitações.
Experimente o seguinte .cfg
arquivo:
\Preamble{xhtml}
\makeatletter
\ExplSyntaxOn
\Configure{Gin-dim}{style="width:\fp_eval:n{round(\Gin@req@width/\textwidth*100,2)}\char_generate:nn { `\% } { 12 }"}
\ExplSyntaxOff
\makeatother
\begin{document}
\EndPreamble
Nesta configuração, dividimos a largura da imagem fornecida pelo Graphics pela largura do texto. Isso é então multiplicado para obter o valor percentual correto.
Para este arquivo de amostra:
% https://tex.stackexchange.com/q/563276/2891
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=0.5\textwidth]{example-image.png}
\end{document}
Você obtém este código HTML:
<p class='noindent'><img style='width:50%' alt='PIC' src='example-image.png' /> </p>