Grafikskalierung in tex4ht

Grafikskalierung in tex4ht

Wenn ich Grafiken mit einführe \includegraphics[width=0.5\textwidth]{fig}, verarbeitet tex4ht diese in eine bestimmte Anzahl von Pixeln (ich bin nicht sicher, wie – vermutlich gibt es eine ppi-Einstellung, die ich noch nicht gesehen habe?) und erstellt ein <img src="..." width="276" height="276">Beispiel, aber was mir natürlich erscheinen würde, wäre beispielsweise <img src="..." style="width: 50%;">.

Es gab schon einmal eine ähnliche Frage -- indiese Antwort, michal.h21 gibt ein Beispiel, wo diese Breiten als „276pt“ (oder ähnlich) erscheinen, aber
(1) ich sehe das nicht, wenn ich einen Test kompiliere – ich sehe nur Zahlen, die meines Wissens in px angegeben sein sollten – obwohl diese Antwort natürlich schon vor 6 Jahren kam;
(2) dies scheint ohnehin kein zulässiges HTML zu sein; und
(3) weder die px- noch die pt-Werte skalieren mit dem Ansichtsfenster (oder, was vielleicht relevanter ist, der formatierten Größe der umgebenden Abbildung).

Das führt mich zu der Frage: Gibt es eine Möglichkeit, relative Bildgrößen direkt mit tex4ht zu verwenden?

Antwort1

Bearbeiten: Der folgende Code ist jetzt in die TeX4ht-Quellen integriert. Sie können ihn mit der Gin-percentOption anfordern. Es kann jedoch einige Zeit dauern, bis er in TeX Live integriert ist.

Die verlinkte Antwort ist wirklich alt und überholt. Sie können \Configure{Gin-dim}den Befehl verwenden, um die Art und Weise zu ändern, wie Bildabmessungen jetzt berechnet werden. Standardmäßig greift TeX4ht auf Informationen zu Bildabmessungen zurück, die vom Grafikpaket bereitgestellt werden. Wenn Sie also explizite Abmessungen verwenden (wie width=0.5\textwidth), wird die tatsächliche von TeX berechnete Abmessung verwendet.

Ein Problem besteht darin, dass, wenn Sie nur eine Dimension festlegen, z. B. die Breite, die andere Dimension auf denselben Wert gesetzt wird. Dies ist normalerweise nicht erwünscht, es sei denn, Ihr Bild ist quadratisch. Um den richtigen Wert für alle Dimensionen zu erhalten, verwendet Graphics eine .xbbDatei für das Bild. Diese kann mit dem folgenden Befehl erstellt werden:

ebb -x *.jpg

Führen Sie den entsprechenden Befehl für jedes andere unterstützte Bildformat aus, das Sie verwenden. Dadurch wird sichergestellt, dass für implizit berechnete Abmessungen die richtigen Werte verwendet werden.

Nun zu Ihrer eigentlichen Frage. Dank des LaTeX 3-Projekts können wir das l3fpPaket jetzt verwenden, um die Bildabmessungen in Prozent zu berechnen. Es ist viel einfacher zu verwenden als \dimexprder Befehl, der viele Einschränkungen hat.

Versuchen Sie es mit der folgenden .cfgDatei:

\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

In dieser Konfiguration teilen wir die von Graphics bereitgestellte Bildbreite durch die Textbreite. Dies wird dann multipliziert, um den richtigen Prozentwert zu erhalten.

Für diese Beispieldatei:

% https://tex.stackexchange.com/q/563276/2891
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=0.5\textwidth]{example-image.png}
\end{document}

Sie erhalten diesen HTML-Code:

<p class='noindent'><img style='width:50%' alt='PIC' src='example-image.png' /> </p> 

verwandte Informationen