Closed DerBunteBall closed 1 month ago
I can confirm that there is an issue even in the HTML output. I probably won't have a time to look into this during the weekend, hopefully I will be able to investigate it next week.
Thanks for the quick reply. Next week would be more than quick.
That was my very first attempt to see if any usable HTML would come out. Unfortunately this is not quite the case. Apparently pdfLaTeX does not seem to be bothered by the thing in line 26 if you use -f html5.
In the end, the HTML output is somehow unclean.
For odt's everything seems to collapse on the way. Presumably because something doesn't fit with the XML (I think odt, like docx, is ultimately just XML).
However, I suspected that this was only because it could not find the control sequences.
In principle, it seems that it somehow no longer works from \subthreesection onwards.
I was hoping that this was just some minor problem with the pdfLaTeX call.
I've fixed the main issues that were causing compilation errors – special sectioning commands provided by Jurabook and footnotes. The fixes are already in TeX4ht sources, so they should be included in TeX Live soon. In the meantime, you can use following configuration files:
jurabook.4ht
:
% jurabook.4ht (2024-05-28-13:39), generated from tex4ht-4ht.tex
% Copyright 2024 TeX Users Group
% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\immediate\write-1{version 2024-05-28-13:39}
\let\no@subthreesection\subthreesection
\Def:Section\subthreesection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubthreesection \fi}{#1}
\let\no:subthreesection\subthreesection
\def\subthreesection{\rdef:sec{subthreesection}}
\let\no@subfoursection\subfoursection
\Def:Section\subfoursection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubfoursection \fi}{#1}
\let\no:subfoursection\subfoursection
\def\subfoursection{\rdef:sec{subfoursection}}
\let\no@subfivesection\subfivesection
\Def:Section\subfivesection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubfivesection \fi}{#1}
\let\no:subfivesection\subfivesection
\def\subfivesection{\rdef:sec{subfivesection}}
\let\no@subsixsection\subsixsection
\Def:Section\subsixsection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubsixsection \fi}{#1}
\let\no:subsixsection\subsixsection
\def\subsixsection{\rdef:sec{subsixsection}}
\let\no@subsevensection\subsevensection
\Def:Section\subsevensection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubsevensection \fi}{#1}
\let\no:subsevensection\subsevensection
\def\subsevensection{\rdef:sec{subsevensection}}
\let\no@subeightsection\subeightsection
\Def:Section\subeightsection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubeightsection \fi}{#1}
\let\no:subeightsection\subeightsection
\def\subeightsection{\rdef:sec{subeightsection}}
\NewConfigure{tableofcontents*}[1]{%
\def\:tempa{#1}\ifx\empty\:tempa
\ifx \au:StartSec\:UnDef \else \gdef\:StartSec{\au:StartSec}\fi
\else
\edef\auto:toc{#1}%
\ifx \au:StartSec\:UnDef
\let\au:StartSec\:StartSec
\def\:StartSec{\:tableofcontents
\global\let\auto:toc\:UnDef \global\let\:StartSec\au:StartSec\:StartSec}%
\append:def\tableofcontents{\gdef\:StartSec{\au:StartSec}}%
\fi \fi
}
\Configure{tableofcontents*}{part,chapter,section,subsection,subsubsection,subthreesection,subfoursection,subfivesection,subsixsection,subsevensection,subeightsection}
\renewcommand{\@makefntext}[1]{%
\stepcounter{totalfootnotes}%
\renewcommand{\baselinestretch}{\@ne}% (nur) dieses hinzugefuegt fuer einzeilige Ausgabe
\parindent 1em%
\noindent%
\@infootnotetrue%
\hb@xt@1.8em{\hss\@makefnmark}#1%
\@infootnotefalse}
\Hinput{jurabook}
and config.cfg
:
\Preamble{xhtml}
\makeatletter
\catcode`\:=11
\ConfigureMark{subthreesection}
{\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble
\else \@seccntformat{subthreesection}\fi }
\Configure{subthreesection}
{\IgnorePar\EndP \HCode{<!--start of subthreesection-->}}
{\IgnorePar\EndP \HCode{<!--end of subthreesection-->}}
{\HCode{<text:h
text:style-name="\csname a:Heading-4\if@rl-rtl\fi
\endcsname"
\text:outlinelevel="4" ><text:span
text:style-name="subthreesection" >}\TitleMark\space
\HCode{</text:span>}\IgnoreIndent}
{\HCode{</text:h>\Hnewline}\par\ShowPar}
\ConfigureMark{subfoursection}
{\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble
\else \@seccntformat{subfoursection}\fi }
\Configure{subfoursection}
{\IgnorePar\EndP \HCode{<!--start of subfoursection-->}}
{\IgnorePar\EndP \HCode{<!--end of subfoursection-->}}
{\HCode{<text:h
text:style-name="\csname a:Heading-4\if@rl-rtl\fi
\endcsname"
\text:outlinelevel="4" ><text:span
text:style-name="subfoursection" >}\TitleMark\space
\HCode{</text:span>}\IgnoreIndent}
{\HCode{</text:h>\Hnewline}\par\ShowPar}
\ConfigureMark{subfivesection}
{\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble
\else \@seccntformat{subfivesection}\fi }
\Configure{subfivesection}
{\IgnorePar\EndP \HCode{<!--start of subfivesection-->}}
{\IgnorePar\EndP \HCode{<!--end of subfivesection-->}}
{\HCode{<text:h
text:style-name="\csname a:Heading-4\if@rl-rtl\fi
\endcsname"
\text:outlinelevel="4" ><text:span
text:style-name="subfivesection" >}\TitleMark\space
\HCode{</text:span>}\IgnoreIndent}
{\HCode{</text:h>\Hnewline}\par\ShowPar}
\ConfigureMark{subsixsection}
{\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble
\else \@seccntformat{subsixsection}\fi }
\Configure{subsixsection}
{\IgnorePar\EndP \HCode{<!--start of subsixsection-->}}
{\IgnorePar\EndP \HCode{<!--end of subsixsection-->}}
{\HCode{<text:h
text:style-name="\csname a:Heading-4\if@rl-rtl\fi
\endcsname"
\text:outlinelevel="4" ><text:span
text:style-name="subsixsection" >}\TitleMark\space
\HCode{</text:span>}\IgnoreIndent}
{\HCode{</text:h>\Hnewline}\par\ShowPar}
\ConfigureMark{subsevensection}
{\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble
\else \@seccntformat{subsevensection}\fi }
\Configure{subsevensection}
{\IgnorePar\EndP \HCode{<!--start of subsevensection-->}}
{\IgnorePar\EndP \HCode{<!--end of subsevensection-->}}
{\HCode{<text:h
text:style-name="\csname a:Heading-4\if@rl-rtl\fi
\endcsname"
\text:outlinelevel="4" ><text:span
text:style-name="subsevensection" >}\TitleMark\space
\HCode{</text:span>}\IgnoreIndent}
{\HCode{</text:h>\Hnewline}\par\ShowPar}
\ConfigureMark{subeightsection}
{\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble
\else \@seccntformat{subeightsection}\fi }
\Configure{subeightsection}
{\IgnorePar\EndP \HCode{<!--start of subeightsection-->}}
{\IgnorePar\EndP \HCode{<!--end of subeightsection-->}}
{\HCode{<text:h
text:style-name="\csname a:Heading-4\if@rl-rtl\fi
\endcsname"
\text:outlinelevel="4" ><text:span
text:style-name="subeightsection" >}\TitleMark\space
\HCode{</text:span>}\IgnoreIndent}
{\HCode{</text:h>\Hnewline}\par\ShowPar}
\ConfigureToc{subthreesection}
{\HCode{<text:p text:style-name="P3" ><text:span
text:style-name="toc-mark" >}}
{ \HCode{</text:span>}}
{}
{\HCode{</text:p>}}
\ConfigureToc{subfoursection}
{\HCode{<text:p text:style-name="P3" ><text:span
text:style-name="toc-mark" >}}
{ \HCode{</text:span>}}
{}
{\HCode{</text:p>}}
\ConfigureToc{subfivesection}
{\HCode{<text:p text:style-name="P3" ><text:span
text:style-name="toc-mark" >}}
{ \HCode{</text:span>}}
{}
{\HCode{</text:p>}}
\ConfigureToc{subsixsection}
{\HCode{<text:p text:style-name="P3" ><text:span
text:style-name="toc-mark" >}}
{ \HCode{</text:span>}}
{}
{\HCode{</text:p>}}
\ConfigureToc{subsevensection}
{\HCode{<text:p text:style-name="P3" ><text:span
text:style-name="toc-mark" >}}
{ \HCode{</text:span>}}
{}
{\HCode{</text:p>}}
\ConfigureToc{subeightsection}
{\HCode{<text:p text:style-name="P3" ><text:span
text:style-name="toc-mark" >}}
{ \HCode{</text:span>}}
{}
{\HCode{</text:p>}}
\catcode`\:=12
\makeatother
\begin{document}
\EndPreamble
Compile using:
$ make4ht -c config.cfg -f odt hausarbeit-demo.tex
Thank you very much! That works.
Two strange things continue to happen:
The above command comes with this warning:
--- OoFilter Error 6 --- Improper record: Font("ec-qtmr","","10","120")
If this is supplemented by -B ./build/ and -d ./odt/ this error also occurs:
[ERROR] mkutils: File ./build/hausarbeit-demo.odt doesn't exist
cp: ./build/hausarbeit-demo.odt: No such file or directory
Do I assume correctly that the above configuration and the - I guess - template only work for odt?
I cannot reproduce these errors. The OoFilter
error should be harmless, but the build error shouldn't happen. Which version of make4ht
do you have? Is it version 0.4
?
The configuration file works only for HTML, this one should work for HTML:
\Preamble{xhtml}
\Configure{subthreesection}
{}{}
{\ifvmode\IgnorePar\fi\EndP\HCode{<h5 class="subthreesection">}\TitleMark\space} {\HCode{</h5>}\par\ShowPar}
\ConfigureMark{subthreesection}{\HCode{<span class="titlemark">}\thesubthreesection\HCode{</span>}}
\Configure{subfoursection}
{}{}
{\ifvmode\IgnorePar\fi\EndP\HCode{<h5 class="subfoursection">}\TitleMark\space} {\HCode{</h5>}\par\ShowPar}
\ConfigureMark{subfoursection}{\HCode{<span class="titlemark">}\thesubfoursection\HCode{</span>}}
\Configure{subfivesection}
{}{}
{\ifvmode\IgnorePar\fi\EndP\HCode{<h5 class="subfivesection">}\TitleMark\space} {\HCode{</h5>}\par\ShowPar}
\ConfigureMark{subfivesection}{\HCode{<span class="titlemark">}\thesubfivesection\HCode{</span>}}
\Configure{subsixsection}
{}{}
{\ifvmode\IgnorePar\fi\EndP\HCode{<h5 class="subsixsection">}\TitleMark\space} {\HCode{</h5>}\par\ShowPar}
\ConfigureMark{subsixsection}{\HCode{<span class="titlemark">}\thesubsixsection\HCode{</span>}}
\Configure{subsevensection}
{}{}
{\ifvmode\IgnorePar\fi\EndP\HCode{<h5 class="subsevensection">}\TitleMark\space} {\HCode{</h5>}\par\ShowPar}
\ConfigureMark{subsevensection}{\HCode{<span class="titlemark">}\thesubsevensection\HCode{</span>}}
\Configure{subeightsection}
{}{}
{\ifvmode\IgnorePar\fi\EndP\HCode{<h5 class="subeightsection">}\TitleMark\space} {\HCode{</h5>}\par\ShowPar}
\ConfigureMark{subeightsection}{\HCode{<span class="titlemark">}\thesubeightsection\HCode{</span>}}
\catcode`\:=11
\def\tocsubthreesection#1#2#3{\par\toc:num{subthreesection}{#1}{#2}\par}
\def\tocsubfoursection#1#2#3{\par\toc:num{subfoursection}{#1}{#2}\par}
\def\tocsubfivesection#1#2#3{\par\toc:num{subfivesection}{#1}{#2}\par}
\def\tocsubsixsection#1#2#3{\par\toc:num{subsixsection}{#1}{#2}\par}
\def\tocsubsevensection#1#2#3{\par\toc:num{subsevensection}{#1}{#2}\par}
\def\tocsubeightsection#1#2#3{\par\toc:num{subeightsection}{#1}{#2}\par}
\catcode`\:=12
\begin{document}
\EndPreamble
$ make4ht --version
make4ht version v0.4
Hm.....
Cleanup
$ rm -rvf ./build/ ./odt/
./build//hausarbeit-demo.idv
./build//hausarbeit-demo.url
./build//hausarbeit-demo.xref
./build//hausarbeit-demo.dcs
./build//hausarbeit-demo.log
./build//hausarbeit-demo.aux
./build//hausarbeit-demo.4tc
./build//hausarbeit-demo.4ct
./build//hausarbeit-demo.dvi
./build//hausarbeit-demo.tmp
./build//hausarbeit-demo.lg
./build/
./odt//hausarbeit-demo.odt
./odt//hausarbeit-demo.4oo
./odt//hausarbeit-demo-styles.4oy
./odt//hausarbeit-demo-manifest.4of
./odt//hausarbeit-demo-meta.4ot
./odt//hausarbeit-demo.4od
./odt//hausarbeit-demo-settings.4os
./odt/
Run build:
$ make4ht -f odt -B ./build/ -d ./odt/ -c config.cfg -a debug hausarbeit-demo.tex
...
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo.odt" "./odt"
[ERROR] mkutils: File ./build/hausarbeit-demo.odt doesn't exist
cp: ./build/hausarbeit-demo.odt: No such file or directory
...
Content of ./build/:
$ ls ./build/
hausarbeit-demo.4ct hausarbeit-demo.dvi hausarbeit-demo.tmp
hausarbeit-demo.4tc hausarbeit-demo.idv hausarbeit-demo.url
hausarbeit-demo.aux hausarbeit-demo.lg hausarbeit-demo.xref
hausarbeit-demo.dcs hausarbeit-demo.log
Content of ./odt/:
$ ls ./odt
hausarbeit-demo-manifest.4of hausarbeit-demo.4od
hausarbeit-demo-meta.4ot hausarbeit-demo.4oo
hausarbeit-demo-settings.4os hausarbeit-demo.odt
hausarbeit-demo-styles.4oy
Type of .tmp in ./build/:
$ file ./build/hausarbeit-demo.tmp
./build/hausarbeit-demo.tmp: XML 1.0 document text, Unicode text, UTF-8 text, with very long lines (1490)
The XML looks like a odt.
They are not the same:
$ sha512sum ./build/hausarbeit-demo.tmp
3bdbfcec66f9f61ab0bbb772a8dc8ec9c81ef21a155758d7791ca3fd8c579ea47c03a4620d445cf2bacf3ca932508c824f528f405da55167c3a0bc5a2ce6ebf9 ./build/hausarbeit-demo.tmp
$ sha512sum ./odt/hausarbeit-demo.odt
b3ad0922c7e53911ea7bb313daf6bb396b6bfddc8390df898fdbad313ae1a5b482b20a9a9c1eb0b5e9899c7147a58ec9fdf0dc495d6f8ddca7a110b434156b67
I'm confused. I don't know whats happening. But cp ./build/hausarbeit-demo.odt ./odt/hausarbeit-demo.odt
definitly can't work..... Hm.....
Only happens with -B and -d.
Can you post the terminal output that follows mkutils: Parse LG
? It is possible that there are more clues what's wrong.
Ater a cleanup and a new build run:
[INFO] mkutils: Parse LG
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4oo
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4oo
[INFO] mkutils: Move: mv "./build/hausarbeit-demo.4oo" "./build/hausarbeit-demo.tmp"
[INFO] xtpipes: execute: java -classpath "/usr/local/texlive/2024/texmf-dist/tex4ht/bin/tex4ht.jar" xtpipes -i "/usr/local/texlive/2024/texmf-dist/tex4ht/xtpipes/" -o "./build/hausarbeit-demo.4oo" "./build/hausarbeit-demo.tmp"
--- OoFilter Error 6 --- Improper record: Font("ec-qtmr","","10","120")
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4oo
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4oo
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4oo
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4oo
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo.4oo" "./odt"
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.tmp
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.tmp
[INFO] make4ht-lib: tmp file
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-settings.4os
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-settings.4os
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo-settings.4os" "./odt"
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-styles.4oy
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-styles.4oy
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo-styles.4oy" "./odt"
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-manifest.4of
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-manifest.4of
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo-manifest.4of" "./odt"
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-meta.4ot
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo-meta.4ot
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo-meta.4ot" "./odt"
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4od
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.4od
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo.4od" "./odt"
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.odt
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.odt
[INFO] make4ht: outdir: ./odt/
[INFO] mkutils: Copy: cp "./build/hausarbeit-demo.odt" "./odt"
[ERROR] mkutils: File ./build/hausarbeit-demo.odt doesn't exist
cp: ./build/hausarbeit-demo.odt: No such file or directory
[INFO] make4ht-lib: parse_lg process file: ./build/hausarbeit-demo.odt
[DEBUG] odt: prepare output file ./build/hausarbeit-demo 4oo
[DEBUG] odt: prepare output file ./build/hausarbeit-demo tmp
[DEBUG] odt: prepare output file ./build/hausarbeit-demo-settings 4os
[DEBUG] odt: prepare output file ./build/hausarbeit-demo-styles 4oy
[DEBUG] odt: prepare output file ./build/hausarbeit-demo-manifest 4of
[DEBUG] odt: prepare output file ./build/hausarbeit-demo-meta 4ot
[DEBUG] odt: prepare output file ./build/hausarbeit-demo 4od
[DEBUG] odt: prepare output file ./build/hausarbeit-demo odt
[INFO] mkutils: Move: mv "./build/hausarbeit-demo.4oo" "lua_h985K1/content.xml"
[INFO] mkutils: Move: mv "./build/hausarbeit-demo-manifest.4of" "lua_h985K1/META-INF/manifest.xml"
[INFO] mkutils: Move: mv "./build/hausarbeit-demo-settings.4os" "lua_h985K1/settings.xml"
[INFO] mkutils: Move: mv "./build/hausarbeit-demo-meta.4ot" "lua_h985K1/meta.xml"
[INFO] mkutils: Move: mv "./build/hausarbeit-demo-styles.4oy" "lua_h985K1/styles.xml"
[DEBUG] odt: Fixed picture sizes
adding: META-INF/ (stored 0%)
adding: META-INF/manifest.xml (deflated 69%)
adding: Pictures/ (stored 0%)
adding: content.xml (deflated 91%)
adding: meta.xml (deflated 58%)
adding: settings.xml (deflated 46%)
adding: styles.xml (deflated 91%)
[INFO] mkutils: Copy: cp "lua_h985K1/hausarbeit-demo.odt" "hausarbeit-demo.odt"
[INFO] odt: Copying ODT file to the output dir: ./odt/hausarbeit-demo.odt
[INFO] mkutils: Copy: cp "hausarbeit-demo.odt" "./odt"
[STATUS] make4ht: Conversion finished
I only notice the error that was already mentioned. Apparently coming from xtpipes.
macOS Monterey with MacTeX installed with Homebrew.
It seems like a bug in make4ht
, because it tries to copy the odt
file before it is created. The packing happens after that line, as you can see the prepare output file
messages. After that the correct odt
file is first copied to your current directory and then to the output directory. So I think the end result should be OK, despite the error message.
Yes, the document works. Both in LibreOffice and in Word.
That is very helpful. Even if you have to fix something in the formatting. But the result is much more than I had hoped for.
The rest would certainly require extensive optimization.
I hopefully fixed the handling of the build dir in the development version of make4ht
. At least it doesn't copy the ODT file several times now. I hope this fix doesn't break something else.
I am trying to translate this LaTeX document into an odt using make4ht.
Strangely enough, pdfLaTeX succeeds in building a PDF in TeXShop, but pdfLaTeX fails when called via make4ht.
Apparently because it does not find control sequences defined by \renewcommand in the document class.
I have done the following:
There also seems to be something wrong with the footnote in line 26. pdfLaTeX doesn't even bother if it runs via TeXShop.
I use the latest version of MacTeX.
It would be very helpful if I could make odt's out of it.
I suspect the problem is simple and only has something to do with the call or with the environment that TeX4ht creates.
I have attached a log.
Any advice will certainly help me. Thank you in advance.
Best Regards
hausarbeit-demo.log