Я использую tdclock
пакет для отображения текущей даты и времени. В Acrobat он выглядит довольно хорошо, но в других просмотрщиках (например, Evince) он выглядит ужасно, потому что они не поддерживают Javascripts и вместо этого показывают красный квадрат (см. ниже).
\documentclass{article}
\usepackage{tdclock}
\begin{document}
\initclock
Date: \tddate
\end{document}
Есть ли способ условно использовать один или другой рендеринг в зависимости от того, используется ли Acrobat для просмотра документа. Или, точнее, использовать один, если Javascript поддерживается, или другой, если нет?
Возможно ли что-то подобное?
\documentclass{article}
\usepackage{tdclock}
\begin{document}
\initclock
% not real code:
\ifJavascriptSupported{\tddate}{\today} % should show dynamic date in Acrobat, and static data in Evince
\ifJavescriptSupported{\tdchorno}{}
\end{document}
Другой способ интерпретации этого вопроса — разрешить альтернативный текст, если зритель не поддерживает функцию (например, media9
поддерживает). (Если нет других вариантов, то даже отсутствие текста будет лучше, чем красное поле.)
Вот сравнение с Acrobat и Evince с текущим кодом:
Акробат(цифры набраны с помощью Javascript, без TeX):
.
Эвинс(уродливые красные квадратики):
.
Желаемый результат в ридере без поддержки JS(статические данные показаны в Evince, аналогично
\today
)
решение1
Это частичное решение проблемы, которое, по крайней мере, устраняет уродливое красное поле, отображаемое в программах просмотра PDF без поддержки Javascript (включая Acrobat, когда эта поддержка отключена).
Случайно я нашел hyperref
здесь скрытую опциюhttps://tex.stackexchange.com/a/79979/1871называется Fld@bordercolor
.
\documentclass{article}
\usepackage{tdclock}
\makeatletter
\def\Fld@bordercolor{1 1 1} % set TextField border to white, there is also Fld@bcolor
\makeatother
\begin{document}
\initclock
Date: \tddate
\end{document}
Если Javascript отключен, на месте даты будет отображаться только пустое место (почти, осталось несколько слешей).