Dimensionamento de gráficos em tex4ht

Dimensionamento de gráficos em tex4ht

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-percentopçã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 .xbbarquivo 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 l3fppacote para calcular as dimensões da imagem em porcentagens. É muito mais fácil de usar do que \dimexpro comando, que tem muitas limitações.

Experimente o seguinte .cfgarquivo:

\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> 

informação relacionada