Na postagemComo posso substituir o CSS do tex4ht em um único arquivo .css?a solução proposta requer a adição de um arquivo de configuração (ou seja,amostra.cfg). Então, se eu tiveramostra.texposso adicionaramostra.cfg.
No entanto, no meu caso, estou usando um arquivo de configuração adicional chamadominhaMídia.cfgpara adicionar alguns recursos adicionais ao meu documento.
Isso significa (se acertei) que devo usar --config myMedia
para adicionar esse arquivo à compilação.
make4ht --utf8 --shell-escape sample.tex --config myMedia
Agora, acabo comdoisarquivos de configuração:
- um com todos os comandos necessários paraminha mídia
- outro arquivo com configuração CSS (aquele com
\CssFile[] \EndCssFile
)
Então:
- devo adicionar algo como
--config myMedia,sample
ou--config "myMedia,sample"
? bem, não funciona... carrega apenas o primeiro arquivo de configuração - devo mesclarminhaMídia.cfgeamostra.cfgjunto? Parece muito feio, mas realmente funciona
Estou esquecendo de algo? Devo mudar o compilador?
Responder1
Gostaria de acrescentar algumas informações adicionais à resposta de Darios.
Apenas um arquivo de configuração pode ser utilizado pelo tex4ht
, mas seu conteúdo pode ser incluído pelo \input
comando, portanto é possível reutilizar partes da configuração entre diferentes projetos. É possível salvar os arquivos específicos no diretório TEXMF local, para que possam ser acessados de qualquer local do computador.
No seu caso, ao criar um pacote personalizado, você precisa criar um arquivo de configuração para esse pacote, chamado packagename.4ht
. Você forneceu o arquivo de configuração do seu pacote myMedia.4ht
em sua resposta. Eu mudaria um pouco:
\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}
O \NewConfigure{myMedia}{2}
comando cria os chamados ganchos que podem ser inseridos nos comandos redefinidos e configurados usando o \Configure
comando. Faz exatamente a mesma coisa que a \NewConfigure
sua resposta, mas é um pouco mais simples.
É melhor manter os \Configure
comandos fora dos arquivos de configuração do pacote. Por que? Ao tex4ht
processar o preâmbulo do documento, ele carrega arquivos de configuração de todos os pacotes utilizados, para redefinir comandos e inserir os ganchos. Depois disso, os arquivos de configuração do formato de saída atual são executados. tex4ht
pode, portanto, suportar HTML, ODT e mais alguns formatos de saída. Portanto, as configurações para HTML são fornecidas em arquivos html4.4ht
ou html5.4ht
, para o formato ODT, ooffice.4ht
etc. É claro que não é possível inserir suas configurações personalizadas nesses arquivos, pois suas edições serão removidas na próxima tex4ht
atualização.
Se você tiver certeza de que oferece suporte apenas a HTML, poderá manter o \Configure
comando em myMedia.4ht
, mesmo que não seja a solução ideal. Outra possibilidade é colocá-lo no .cfg
arquivo e a última é criar um formato de saída personalizado. Mostrarei essa possibilidade apenas para fins educacionais:
Os formatos de saída são definidos no tex4ht.4ht
arquivo. Esta é a definição de html5
formato, por exemplo:
\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}%
}
O \Configure
comando aqui declara um código que é executado quando a marca usada como argumento é usada como opção para tex4ht
. html5
é adicionado automaticamente make4ht
para que este código seja executado por padrão.
O formato de saída personalizado pode ser definido no tex4ht.usr
arquivo. É possível colocá-lo na árvore TEXMF local, por exemplo ~/texmf/tex/latex/tex4ht/tex4ht.usr
parece funcionar. Seu conteúdo pode ser assim:
\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}
}
A diferença para a listagem anterior é que a marca recebe um nome myhtml5
e é solicitado um novo arquivo, myconfig.4ht
. Para solicitar este formato de saída, execute
make4ht filename.tex "myhtml5"
As configurações personalizadas podem então ser adicionadas ao myconfig.4ht
arquivo, que pode ser salvo no mesmo local 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
Eu usei o modelo para um pacote dea documentação do tex4ht. Em geral, o código de um pacote precisa ser colocado entre \ConfigureHinput{packagename} ... \endinput
. Isso garante que ele seja executado somente quando o pacote tiver sido usado no documento. Caso contrário, você receberia avisos sobre configurações ausentes e código HTML provavelmente indesejado em seu documento. Os pacotes utilizados são registrados para processamento através do \Hinput
comando no .4ht
arquivo do pacote.
A configuração de myMedia
foi um pouco modificada, para poder manusear corretamente os parágrafos. A configuração original produziu código HTML inválido devido a este problema. Você pode copiar o \Configure
comando para o .cfg
arquivo ou para o myMedia.4ht
se decidir usar soluções mais simples. Esta é a única correção realmente necessária da minha resposta.
A última informação que quero fornecer em minha resposta é que é possível usar um comando mais simples para inclusão de um arquivo CSS externo:
\Preamble{xhtml}
\begin{document}
\Configure{AddCss}{samplestyle.css}
\EndPreamble
Não incluirá o código samplestyle.css
do arquivo CSS principal, apenas incluirá um link para o cabeçalho HTML. Acho que é uma forma preferível na maioria dos casos.
Este é o resultado do 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" />
Responder2
Ok, apenas segui o que o @gusbrs sugeriu no comentário abaixo (muito obrigado!) e ele acertou: existenão há necessidadede qualquerminhaMídia.cfg. O que estava lá, poderia simplesmente ser movido paraminhaMedia.4ht.
Esta solução permite separar completamente o arquivo de configuração global (amostra.cfg) de arquivos de outros pacotes (comominhaMedia.4ht).
O actualtrabalhandoconfiguração é a seguinte:
amostra.texcontém o
\usepackage{myMedia}
comando no preâmbulo do 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}
- amostra.cfgque funciona como um arquivo de configuração real;
\Preamble{xhtml} \begin{document} \CssFile[samplestyle.css] \EndCssFile \EndPreamble
- minhaMedia.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}
- minhaMedia.sty
\ProvidesPackage{myMedia} \newcommand\myMedia[1]{#1} \endinput
- estilo de amostra.csscontém o estilo CSS do documento;
/* css.sty */ body { text-align: justify; }
A linha de comando é
make4ht --utf8 --shell-escape sample.tex --config sample
Para quem precisa de um MWE, aqui está:minha amostra