make4ht - 여러 구성 파일 제공

make4ht - 여러 구성 파일 제공

게시물에단일 .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에 복사할 수 있습니다 . 이것이 내 대답에서 실제로 필요한 유일한 수정 사항입니다..cfgmyMedia.4ht

내 답변에서 제공하고 싶은 마지막 정보는 외부 CSS 파일을 포함하기 위해 더 간단한 명령을 사용할 수 있다는 것입니다.

\Preamble{xhtml}
\begin{document}
\Configure{AddCss}{samplestyle.css}
\EndPreamble

여기에는 기본 CSS 파일의 코드가 포함되지 않으며 samplestyle.cssHTML 헤더에 대한 링크만 포함됩니다. 대부분의 경우에 바람직한 방법이라고 생각합니다.

명령의 결과입니다

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가 필요한 분들을 위한 정보는 다음과 같습니다:내 샘플

관련 정보