Tỷ lệ đồ họa trong tex4ht

Sep 19 2020

Khi tôi giới thiệu đồ họa với \includegraphics[width=0.5\textwidth]{fig}, tex4ht xử lý điều này thành một số pixel (tôi không chắc làm thế nào - có lẽ là có cài đặt ppi mà tôi chưa gặp phải?) Và tạo ra một <img src="..." width="276" height="276">ví dụ, nhưng điều có vẻ tự nhiên đối với tôi sẽ là, nói <img src="..." style="width: 50%;">,.

Trước đây cũng có một loại câu hỏi tương tự - trong câu trả lời này , michal.h21 đưa ra một ví dụ trong đó các độ rộng này xuất hiện dưới dạng "276pt" (hoặc tương tự), nhưng
(1) Tôi không thấy điều này khi tôi biên dịch kiểm tra - Tôi chỉ thấy những con số, mà tôi hiểu phải là px - mặc dù tất nhiên câu trả lời đó đã mất 6 năm;
(2) dù sao đây cũng không phải là html hợp pháp; và
(3) cả giá trị px và pt đều không chia tỷ lệ với khung nhìn (hoặc, có lẽ thích hợp hơn, là kích thước theo kiểu của hình xung quanh).

Vì vậy, điều này dẫn tôi đến câu hỏi: có cách nào để sử dụng trực tiếp kích thước hình ảnh tương đối với tex4ht không?

Trả lời

2 michal.h21 Sep 19 2020 at 18:02

Câu trả lời được liên kết đó thực sự cũ và lỗi thời. Bạn có thể sử dụng \Configure{Gin-dim}lệnh để thay đổi cách tính kích thước hình ảnh ngay bây giờ. Theo mặc định, TeX4ht dựa trên thông tin về kích thước hình ảnh được cung cấp bởi gói Đồ họa. Vì vậy, nếu bạn sử dụng thứ nguyên rõ ràng (như width=0.5\textwidth), thì thứ nguyên thực tế do TeX tính toán sẽ được sử dụng.

Một vấn đề là nếu bạn chỉ đặt một thứ nguyên, chẳng hạn như chiều rộng, thì thứ nguyên kia sẽ được đặt thành cùng một giá trị. Bạn thường không muốn điều này, trừ khi hình ảnh của bạn là hình vuông. Để nhận được giá trị chính xác cho tất cả các kích thước, Đồ họa sử dụng một .xbbtệp cho hình ảnh. Nó có thể được tạo bằng lệnh sau:

ebb -x *.jpg

Chạy lệnh tương tự cho mọi định dạng hình ảnh được hỗ trợ khác mà bạn sử dụng. Điều này sẽ đảm bảo rằng các giá trị chính xác được sử dụng cho các kích thước được tính toán ngầm.

Bây giờ, câu hỏi thực tế của bạn. Nhờ dự án LaTeX 3, giờ đây chúng ta có thể sử dụng l3fpgói để tính kích thước hình ảnh theo phần trăm. Nó dễ sử dụng hơn nhiều so với \dimexprlệnh, vốn có rất nhiều hạn chế.

Hãy thử .cfgtệp sau :

\Preamble{xhtml}
\makeatletter
\ExplSyntaxOn
\Configure{Gin-dim}{style="width:\fp_eval:n{round(\Gin@req@width/\textwidth*100,2)}\%"}
\ExplSyntaxOff
\makeatother
\begin{document}
\EndPreamble

Trong cấu hình này, chúng tôi chia chiều rộng hình ảnh do Đồ họa cung cấp cho chiều rộng văn bản. Sau đó, giá trị này được nhân lên để nhận được giá trị phần trăm chính xác.

Đối với tệp mẫu này:

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

Bạn nhận được mã HTML này:

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