게시물에단일 .css 파일에서 tex4ht의 CSS를 어떻게 재정의할 수 있나요?제안된 솔루션에는 구성 파일(즉,샘플.cfg). 그래서 내가 가지고 있다면샘플.텍스나는 추가할지도 모른다샘플.cfg.
하지만 제 경우에는 다음과 같은 추가 구성 파일을 사용하고 있습니다.myMedia.cfg내 문서에 몇 가지 추가 기능을 추가합니다.
--config myMedia
이는 (내가 올바르게 이해한 경우) 이 파일을 편집에 추가하는 데 사용해야 함을 의미합니다 .
make4ht --utf8 --shell-escape sample.tex --config myMedia
이제 나는 결국둘구성 파일:
- 필요한 모든 명령이 포함된 하나마이미디어
- CSS 구성이 포함된 또 다른 파일(
\CssFile[] \EndCssFile
)
그래서:
--config myMedia,sample
또는 같은 것을 추가해야 합니까--config "myMedia,sample"
? 음, 작동하지 않습니다... 첫 번째 구성 파일만 로드합니다- 합쳐야 하나?myMedia.cfg그리고샘플.cfg함께? 보기에는 정말 못생겼지만 실제로는 작동합니다
뭔가 빠졌나요? 컴파일러를 바꿔야 할까요?
답변1
Darios 답변에 몇 가지 추가 정보를 추가하고 싶습니다.
에서는 하나의 구성 파일만 사용할 수 있지만 tex4ht
해당 내용은 명령에 포함될 수 있으므로 \input
다른 프로젝트 간에 구성의 일부를 재사용할 수 있습니다. 로컬 TEXMF 디렉토리에 특정 파일을 저장하는 것이 가능하므로 컴퓨터의 어느 위치에서나 액세스할 수 있습니다.
귀하의 경우 사용자 정의 패키지를 생성할 때 해당 패키지에 대한 구성 파일을 생성해야 합니다 packagename.4ht
. myMedia.4ht
답변에 패키지 구성 파일을 제공했습니다 . 나는 그것을 조금 바꿀 것입니다 :
\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}
이 \NewConfigure{myMedia}{2}
명령은 재정의된 명령에 삽입되고 명령을 사용하여 구성될 수 있는 소위 후크를 생성합니다 \Configure
. 귀하의 답변 과 정확히 동일한 작업을 수행 \NewConfigure
하지만 조금 더 간단합니다.
\Configure
패키지 구성 파일에 명령을 포함 하지 않는 것이 좋습니다 . 왜? 문서 프리앰블을 처리할 때 tex4ht
명령을 재정의하고 후크를 삽입하기 위해 사용된 모든 패키지에 대한 구성 파일을 로드합니다. 그런 다음 현재 출력 형식에 대한 구성 파일이 실행됩니다. tex4ht
따라서 HTML, ODT 및 기타 출력 형식을 지원할 수 있습니다. 따라서 HTML에 대한 구성은 html4.4ht
파일 html5.4ht
, ODT 형식 등에 대해 제공됩니다 ooffice.4ht
. 물론 다음 업데이트에서 편집 내용이 제거되므로 이러한 파일에 사용자 정의 구성을 삽입하는 것은 불가능합니다 tex4ht
.
HTML만 지원한다고 확신하는 경우 최적의 솔루션이 아니더라도 \Configure
명령을 에 유지할 수 있습니다. myMedia.4ht
또 다른 가능성은 파일에 넣는 것이고 .cfg
마지막 방법은 사용자 정의 출력 형식을 만드는 것입니다. 나는 교육 목적으로만 이 가능성을 보여 드리겠습니다.
출력 형식은 tex4ht.4ht
파일에 정의되어 있습니다. 이는 형식에 대한 정의입니다 html5
. 예를 들면 다음과 같습니다.
\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}%
}
여기의 명령 은 \Configure
인수로 사용된 표시가 의 옵션으로 사용될 때 실행되는 코드를 선언합니다 tex4ht
. html5
에 의해 자동으로 추가되므로 make4ht
이 코드는 기본적으로 실행됩니다.
사용자 정의 출력 형식은 tex4ht.usr
파일에서 정의할 수 있습니다. 예를 들어 작동하는 것처럼 보이는 로컬 TEXMF 트리에 배치하는 것이 가능합니다 ~/texmf/tex/latex/tex4ht/tex4ht.usr
. 내용은 다음과 같습니다.
\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}
}
이전 목록과의 차이점은 마크 이름이 지정 myhtml5
되고 새 파일인 myconfig.4ht
. 이 출력 형식을 요청하려면 다음을 실행하세요.
make4ht filename.tex "myhtml5"
그런 다음 사용자 정의 구성을 파일에 추가할 수 myconfig.4ht
있으며 다음과 같은 위치에 저장할 수 있습니다 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
나는 패키지의 템플릿을 사용했습니다.tex4ht 문서. 일반적으로 패키지 코드는 \ConfigureHinput{packagename} ... \endinput
. 이렇게 하면 해당 패키지가 문서에서 사용된 경우에만 실행됩니다. 그렇지 않으면 문서에 구성 누락 및 원치 않는 HTML 코드에 대한 경고가 표시됩니다. 사용된 패키지는 \Hinput
패키지 .4ht
파일의 명령어를 통해 처리를 위해 등록됩니다.
단락을 올바르게 처리하기 위해 구성이 myMedia
약간 수정되었습니다. 이 문제로 인해 원래 구성에서 잘못된 HTML 코드가 생성되었습니다. 더 간단한 솔루션을 사용하기로 결정한 경우 명령을 파일 \Configure
에 복사할 수 있습니다 . 이것이 내 대답에서 실제로 필요한 유일한 수정 사항입니다..cfg
myMedia.4ht
내 답변에서 제공하고 싶은 마지막 정보는 외부 CSS 파일을 포함하기 위해 더 간단한 명령을 사용할 수 있다는 것입니다.
\Preamble{xhtml}
\begin{document}
\Configure{AddCss}{samplestyle.css}
\EndPreamble
여기에는 기본 CSS 파일의 코드가 포함되지 않으며 samplestyle.css
HTML 헤더에 대한 링크만 포함됩니다. 대부분의 경우에 바람직한 방법이라고 생각합니다.
명령의 결과입니다
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" />
답변2
좋아, 나는 아래 댓글에서 @gusbrs가 제안한 내용을 따랐고(정말 감사합니다!) 그의 말이 옳았습니다.필요 없음어떤 것의myMedia.cfg. 거기에 있던 것은 그냥 옮겨도 될 것 같았어요myMedia.4ht.
이 솔루션을 사용하면 전역 구성 파일(샘플.cfg) 다른 패키지 파일(예:myMedia.4ht).
현재일하고 있는설정은 다음과 같습니다:
샘플.텍스
\usepackage{myMedia}
문서 서문에 명령이 포함되어 있습니다 .\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}
- 샘플.cfg실제 구성 파일처럼 작동합니다.
\Preamble{xhtml} \begin{document} \CssFile[samplestyle.css] \EndCssFile \EndPreamble
- myMedia.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
- 샘플스타일.css문서의 CSS 스타일을 포함합니다.
/* css.sty */ body { text-align: justify; }
명령줄은 다음과 같습니다.
make4ht --utf8 --shell-escape sample.tex --config sample
MWE가 필요한 분들을 위한 정보는 다음과 같습니다:내 샘플