en la publicación¿Cómo puedo anular el CSS de tex4ht en un único archivo .css?la solución propuesta requiere agregar un archivo de configuración (es decir,muestra.cfg). Entonces, si tengomuestra.texpuedo agregarmuestra.cfg.
Sin embargo, en mi caso, estoy usando un archivo de configuración adicional llamadomisMedia.cfgpara agregar algunas características adicionales a mi documento.
Esto significa (si lo hice bien) que debería usar --config myMedia
para agregar este archivo a la compilación.
make4ht --utf8 --shell-escape sample.tex --config myMedia
Ahora termino condosArchivos de configuración:
- uno con todos los comandos necesarios paramis medios
- otro archivo con configuración CSS (el que tiene
\CssFile[] \EndCssFile
)
Entonces:
- ¿Debería agregar algo como
--config myMedia,sample
o--config "myMedia,sample"
? bueno, no funciona... carga solo el primer archivo de configuración - ¿Debería fusionarme?misMedia.cfgymuestra.cfg¿juntos? Parece muy feo, pero realmente funciona.
¿Me estoy perdiendo de algo? ¿Debo cambiar el compilador?
Respuesta1
Me gustaría agregar información adicional a la respuesta de Darios.
Solo se puede utilizar un archivo de configuración tex4ht
, pero su contenido se puede incluir mediante el \input
comando, por lo que es posible reutilizar partes de la configuración entre diferentes proyectos. Es posible guardar los archivos particulares en el directorio TEXMF local, para que sean accesibles desde cualquier ubicación de una computadora.
En su caso, al crear un paquete personalizado, necesita crear un archivo de configuración para ese paquete, llamado packagename.4ht
. Proporcionó el archivo de configuración para su paquete myMedia.4ht
en su respuesta. Yo lo cambiaría un poco:
\NewConfigure{myMedia}{2}%
\renewcommand\myMedia[1]{\a:myMedia#1\b:myMedia}
%\Configure{myMedia}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src="}\NoFonts}{\HCode{" type="video/mp4"></video></div>}\EndNoFonts}
\Hinput{myMedia}
El \NewConfigure{myMedia}{2}
comando crea los llamados ganchos que se pueden insertar en los comandos redefinidos y configurar usando el \Configure
comando. Hace exactamente lo mismo que \NewConfigure
tu respuesta, pero es un poco más simple.
Es mejor mantener los \Configure
comandos fuera de los archivos de configuración del paquete. ¿Por qué? Cuando tex4ht
procesa el preámbulo del documento, carga archivos de configuración para todos los paquetes utilizados, con el fin de redefinir comandos e insertar los ganchos. Después de eso, se ejecutan los archivos de configuración para el formato de salida actual. tex4ht
Por lo tanto, puede admitir HTML, ODT y algunos formatos de salida más. Por lo tanto, las configuraciones para HTML se proporcionan en archivos html4.4ht
o html5.4ht
, para el formato ODT, ooffice.4ht
etc. Por supuesto, no le es posible insertar sus configuraciones personalizadas en estos archivos, ya que sus ediciones se eliminarán en la próxima tex4ht
actualización.
Si está seguro de que solo admite HTML, puede mantener el \Configure
comando en myMedia.4ht
, incluso si no es la solución óptima. Otra posibilidad es ponerlo en el .cfg
archivo y la última es crear un formato de salida personalizado. Mostraré esta posibilidad sólo con fines educativos:
Los formatos de salida se definen en el tex4ht.4ht
archivo. Esta es la definición de html5
formato, por ejemplo:
\Configure{html5}{%
\:CheckOption{info}\if:Option
\Hinclude[*]{infoht4.4ht}\fi
\:CheckOption{info}\if:Option
\Hinclude[*]{infomml.4ht}\fi
\Hinclude[*]{html4.4ht}%
\Hinclude[*]{unicode.4ht}%
\:CheckOption{mathml}\if:Option%
\else\:CheckOption{mathml-}\fi%
\if:Option%
\Hinclude[*]{mathml.4ht}%
\Hinclude[*]{html-mml.4ht}%
\else
\Hinclude[*]{html4-math.4ht}%
\fi
\:CheckOption{svg}%
\if:Option \else\:CheckOption{svg-}\fi
\if:Option \else\:CheckOption{svg-obj}\fi
\if:Option \else\:CheckOption{svg-inline}\fi
\if:Option \Hinclude[*]{svg-option.4ht}%
\:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi
\fi
\Hinclude[*]{html5.4ht}%
}
El \Configure
comando aquí declara un código que se ejecuta cuando la marca utilizada como argumento se usa como una opción para tex4ht
. html5
se agrega automáticamente por make4ht
lo que este código se ejecuta de forma predeterminada.
El formato de salida personalizado se puede definir en el tex4ht.usr
archivo. Es posible colocarlo en el árbol TEXMF local, por ejemplo ~/texmf/tex/latex/tex4ht/tex4ht.usr
parece funcionar. Su contenido puede verse así:
\Configure{myhtml5}{%
\:CheckOption{info}\if:Option
\Hinclude[*]{infoht4.4ht}\fi
\:CheckOption{info}\if:Option
\Hinclude[*]{infomml.4ht}\fi
\Hinclude[*]{html4.4ht}%
\Hinclude[*]{unicode.4ht}%
\:CheckOption{mathml}\if:Option%
\else\:CheckOption{mathml-}\fi%
\if:Option%
\Hinclude[*]{mathml.4ht}%
\Hinclude[*]{html-mml.4ht}%
\else
\Hinclude[*]{html4-math.4ht}%
\fi
\:CheckOption{svg}%
\if:Option \else\:CheckOption{svg-}\fi
\if:Option \else\:CheckOption{svg-obj}\fi
\if:Option \else\:CheckOption{svg-inline}\fi
\if:Option \Hinclude[*]{svg-option.4ht}%
\:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi
\fi
\Hinclude[*]{html5.4ht}%
\Hinclude[*]{myconfig.4ht}
}
La diferencia con el listado anterior es que se nombra la marca myhtml5
y se solicita un nuevo archivo, myconfig.4ht
. Para solicitar este formato de salida, ejecute
make4ht filename.tex "myhtml5"
Luego, las configuraciones personalizadas se pueden agregar al myconfig.4ht
archivo, que se puede guardar en la misma ubicación que tex4ht.usr
:
\exit:ifnot{myMedia}
\ConfigureHinput{myMedia}
\Configure{myMedia}
{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src="}\NoFonts}
{\HCode{" type="video/mp4"></video></div>}\EndNoFonts}
\endinput\empty\empty\empty\empty\empty\empty
\endinput
He usado la plantilla para un paquete dela documentación tex4ht. En general, el código de un paquete debe estar incluido en \ConfigureHinput{packagename} ... \endinput
. Esto garantiza que se ejecute solo cuando el paquete se haya utilizado en el documento. De lo contrario, recibirá advertencias sobre configuraciones faltantes y probablemente código HTML no deseado en su documento. Los paquetes usados se registran para el procesamiento mediante el \Hinput
comando en el .4ht
archivo del paquete.
La configuración de myMedia
ha sido modificada un poco, para poder manejar correctamente los párrafos. La configuración original produjo un código HTML no válido debido a este problema. Puede copiar el \Configure
comando al .cfg
archivo o al archivo myMedia.4ht
si decide utilizar una solución más simple. Esta es la única solución realmente necesaria de mi respuesta.
La última información que quiero proporcionar en mi respuesta es que es posible utilizar un comando más simple para incluir un archivo CSS externo:
\Preamble{xhtml}
\begin{document}
\Configure{AddCss}{samplestyle.css}
\EndPreamble
No incluirá el código del samplestyle.css
archivo CSS principal, solo incluirá un enlace al encabezado HTML. Creo que es una forma preferible en la mayoría de los casos.
Este es el resultado del comando.
make4ht -um draft -c sample.cfg sample.tex "myhtml5"
<hr class="figure" /><div class="figure"
>
<a id="x1-21"></a>
<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src="test.mp4" type="video/mp4"></video></div>
<br /> <div class="caption"
><span class="id">Figure 1: </span><span
class="content">test</span></div><!--tex4ht:label?: x1-21 -->
</div><hr class="endfigure" />
Respuesta2
Ok, simplemente seguí lo que @gusbrs sugirió en el comentario a continuación (¡muchas gracias!) y tenía razón: hayNo hay necesidadde cualquiermisMedia.cfg. Lo que había allí, simplemente podría trasladarse amisMedia.4ht.
Esta solución permite separar completamente el archivo de configuración global (muestra.cfg) de archivos de otros paquetes (comomisMedia.4ht).
La corrientelaboralla configuración es la siguiente:
muestra.texcontiene el
\usepackage{myMedia}
comando en el preámbulo del documento;\documentclass{article} \usepackage{graphicx} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} % may use latin1 instead of utf8 \usepackage[hidelinks]{hyperref} \usepackage{myMedia} \begin{document} \begin{figure} \centering \myMedia{test.mp4} \caption{test} \end{figure} \end{document}
- muestra.cfgque actúa como un archivo de configuración real;
\Preamble{xhtml} \begin{document} \CssFile[samplestyle.css] \EndCssFile \EndPreamble
- misMedia.4ht
\NewConfigure{myMedia}[2]% { \def\a:myMedia{#1}% \def\b:myMedia{#2}% } \renewcommand\myMedia[1]{\a:myMedia#1\b:myMedia} \Configure{myMedia}{\HCode{<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src=}\NoFonts}{\HCode{ type="video/mp4"></video></div>}\EndNoFonts}
- myMedia.sty
\ProvidesPackage{myMedia} \newcommand\myMedia[1]{#1} \endinput
- estilo de muestra.csscontiene el estilo CSS del documento;
/* css.sty */ body { text-align: justify; }
La línea de comando es
make4ht --utf8 --shell-escape sample.tex --config sample
Para aquellos que puedan necesitar un MWE, aquí está:mi muestra