правильный размер изображений PNG в уценке с помощью pandoc для html / pdf / docx

25

Я пытаюсь использовать разметку с Pandoc для преобразования одного документа в HTML, PDF и DOCX. Это очень простой документ, содержащий только математический текст и несколько изображений. Изображения в формате PNG. Я включаю изображение, используя это в источнике уценки:

<div style="float:center" markdown="1">

![my caption](./figures/myimage.png)

</div>

и скомпилируйте это как:

# html
pandoc myarticle.md -c mystyle.css -o myarticle.html
# pdf
pandoc myarticle.md -V geometry:margin=1in -o myarticle.pdf
# docx
pandoc myarticle.md -o myarticle.docx

Я заметил, что некоторые изображения в формате PNG, имеющие одинаковые размеры , имеют разный размер в форматах HTML и PDF. PNG размером 250x256 px с низким разрешением (72 px / in) будет отображаться в PDF как правильный размер примерно на странице и иметь разумный размер в формате html, но PNG с такими же размерами (250x256 px), но с высоким разрешением (300 пикселей на дюйм) изменяются, чтобы быть крошечными на странице в выводе PDF. Я хочу сохранить набор изображений PNG в указанном мной размере, чтобы они отображались в этом размере в обоих форматах HTML / PDF / DOCX.

Я готов отказаться от автоматической поддержки docx (или иметь дело с большим количеством ручного форматирования после) только для того, чтобы иметь PDF / HTML.

Как я могу сказать pandoc не изменять размеры PNG для PDF или изображений и отображать их в правильных изображениях? Благодарю.

user46976
источник
2
PNG с разрешением 300 точек на дюйм, но только 250x256 пикселей должен быть довольно маленьким на странице, не так ли? (Менее одного дюйма квадрата.) PNG с меньшим разрешением на дюйм будет больше на странице. Pandoc учитывает информацию о точках на дюйм, а также размер пикселя при определении размера изображений. И не должно ли это? Возможно, вы могли бы использовать CSS для глобального уменьшения изображений с высоким разрешением в HTML.
Джон Макфарлейн
1
@JohnMacFarlane: Я вижу, что поведение pandoc правильно с учетом dpi, но я хочу, чтобы оно игнорировало dpi и придерживалось абсолютных размеров, чтобы я мог сохранить один PNG с высоким разрешением для всех изображений. Является ли правильный способ сделать это, чтобы сделать изображения с более низким разрешением, или есть способ заставить pandoc просто использовать размеры изображения и игнорировать разрешение? Это было бы проще всего с моей стороны
user46976

Ответы:

17

Размеры преобразуются в пиксели для вывода в HTML-подобных форматах. Используйте параметр --dpi, чтобы указать количество пикселей на дюйм. Значение по умолчанию составляет 96 точек на дюйм.

Найдите наиболее распространенный элемент в ваших фотографиях и используйте его. Изменяйте только исключения.


Примеры: dpi, ширина, высота.

Если вы дадите ему информацию dpi:

Добавьте параметр --dpi, как указано, чтобы переопределить значение по умолчанию.


Если большинство ваших фотографий имеют общую высоту или ширину, это должно быть легко исправлено.

Например, вы изменили строку на:

![my caption](./figures/myimage.png){ width=250px }

или

![my caption](./figures/myimage.png){ height=256px }

Или сделайте это в прямой разметке HTML:

<img src="./figures/myimage.png" alt="my caption" style="width: 250px;"/>

или

<img src="./figures/myimage.png" alt="my caption" style="height: 256px;"/>

и соотношение будет правильным.


Ссылка: Pandoc Readme

Для HTML и EPUB все атрибуты, кроме ширины и высоты (но включая srcset и размеры), передаются как есть. Другие авторы игнорируют атрибуты, которые не поддерживаются их выходным форматом.

Атрибуты ширины и высоты на изображениях обрабатываются специально. При использовании без единицы измерения предполагается, что это пиксели. Однако можно использовать любой из следующих идентификаторов единиц: px, cm, mm, in, inch и%.

Размеры преобразуются в дюймы для вывода в форматах на основе страниц, таких как LaTeX. Размеры преобразуются в пиксели для вывода в HTML-подобных форматах. Используйте параметр --dpi, чтобы указать количество пикселей на дюйм. Значение по умолчанию составляет 96 точек на дюйм.

Единица%, как правило, относится к некоторому доступному пространству. Например, приведенный выше пример будет отображаться в <img href="file.jpg" style="width: 50%;" />(HTML), \includegraphics[width=0.5\textwidth]{file.jpg} (LaTeX), or \externalfigure[file.jpg][width=0.5\textwidth](ConTeXt).

Некоторые выходные форматы имеют понятие класса (ConTeXt) или уникального идентификатора (LaTeX \ caption), или обоих (HTML).

Если атрибуты width или height не указаны, запасной вариант заключается в проверке разрешения изображения и метаданных dpi, встроенных в файл изображения.

BloodyEl
источник
4
Можно также использовать { width=100% }для относительной ширины к общему размеру экрана / страницы / ширины линии.
Риман
Можно ли это использовать с синтаксисом pandoc-crossrefs {#fig:refname}?
oarfish
1
Отвечая на мой собственный комментарий: {#fig:refname width=50%}работает.
oarfish