ODT आउटपुट में मौजूदा सिंगल लाइन क्लासेस को mk4ht oolatex से कस्टमाइज़ करना

Aug 18 2020

इस प्रश्न के विस्तार के रूप में: mk4ht oolatex से ODT आउटपुट में नई सिंगल लाइन कक्षाएं बनाना

मैं पहले से कॉन्फ़िगर किए गए मौजूदा आदेशों में निर्दिष्ट शैली को फिर से असाइन करने के लिए इस दृष्टिकोण का उपयोग करने का प्रयास कर रहा हूं। लिंक किए गए प्रश्न की टिप्पणियों में प्रदान किया गया प्रारंभिक मार्गदर्शन, जिसमें \Configure{section}पाया गया कमांड से शुरू होता हैooffice.4ht

\Configure{section}
   {\IgnorePar\EndP \HCode{<!--start of section-->}}
   {\IgnorePar\EndP \HCode{<!--end of section-->}}
   {\HCode{<text:h
            text:style-name="\csname a:Heading-2\if@rl-rtl\fi
\endcsname"
                   \text:outlinelevel="2" ><text:span
                   text:style-name="section" >}\TitleMark\space
    \HCode{</text:span>}\IgnoreIndent}
   {\HCode{</text:h>\Hnewline}\par\ShowPar}

इसलिए मैंने शुरुआती बिंदु के रूप में इस ब्लॉक के साथ खेलना शुरू किया। लेकिन मैं इस ब्लॉक को अपने स्वयं के स्टाइल नामों के साथ अनुकूलित करने के लिए संकलित करने में असमर्थ हूं। मैंने कई क्रमपरिवर्तन की कोशिश की है और प्रत्येक में विस्तार करने के लिए गुंजाइश बदल जाती है, लेकिन संक्षेप में, मैंने कोशिश की है:

  1. csnameकेवल मेरे इच्छित अनुभाग नाम को लाइन को सरल बनाना ।
  2. मैं की तरह टेक्स कोड को हटा दिया है \TitleMarkऔर \space
  3. मैंने संबंधित प्रश्न के उत्तर से प्रेरित HCodeअनुकूलित HCodeपाठ के साथ भागों को बदलने का भी प्रयास किया है ।
  4. मेरा सेटअप रिक्त स्थान के लिए संवेदनशील लगता है इसलिए मैं इसके साथ-साथ %लाइन एंडिंग पर भी खेल रहा हूं ।

मुझे :hऔर संबंधित >चरित्र के बारे में शिकायत करते समय त्रुटि संदेश मिलता है , लेकिन सामान्य तौर पर यह केवल विशिष्ट रिपोर्ट करता हैMissing \begin{document} in myconfig.cfg

मेगावाट:

test.tex

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{xcolor}
\definecolor{specialtextcolor}{rgb}{0,0,1}

\newenvironment{test}
{\par\begin{color}{specialtextcolor}}
{\end{color}}


\usepackage[parfill]{parskip}

\usepackage{longtable}

\usepackage{graphicx}
\usepackage[export]{adjustbox}
    
\begin{document}
    
This is a normal paragraph.

\section{Custom style access test}

test text in the first level of section hierarchy 

more text

\begin{test}
    This is a test environment.
\end{test}    

more text

This is a blockquote environment

\begin{quote}
    This is a test quote environment.
\end{quote}    
    
\end{document}

myconfig.cfg

\Preamble{xhtml}
% to simplify the things
\def\myendpar{\ifvmode\IgnorePar\fi\EndP}

% configure the single line commands in Tex against their corresponding style in the template

\Configure{section}%
{\IgnorePar\EndP \HCode{<!--start of section-->}}%
{\IgnorePar\EndP \HCode{<!--end of section-->}}%
{\HCode{<text:h
        text:style-name="Heading-2">
        text:outlinelevel="2" ><text:span
        text:style-name="section" >}%
    %\TitleMark\space%
    \HCode{</text:span>}%
    %\IgnoreIndent%
}%
{\HCode{</text:h>\Hnewline}\par\ShowPar}%


% configure the environments in Tex against their corresponding style in the template
\ConfigureEnv{test}%
{%
    \myendpar\bgroup%
    % when you want to modify the paragraph style, you must redefine the paragraph configuration to use the test style name
    \Configure{HtmlPar}%
        {\EndP \HCode{<text:p text:style-name="test">}}%
        {\EndP \HCode{<text:p text:style-name="test">}}%
        {\HCode{</text:p>}}%
        {\HCode{</text:p>}}%
    \par\ShowPar%
}{\myendpar\egroup}{}{}%


\ConfigureEnv{quote}%
{%
    \myendpar\bgroup%
    % when you want to modify the paragraph style, you must redefine the paragraph configuration to use the test style name
    \Configure{HtmlPar}%
        {\EndP \HCode{<text:p text:style-name="quote">}}%
        {\EndP \HCode{<text:p text:style-name="quote">}}%
        {\HCode{</text:p>}}%
        {\HCode{</text:p>}}%
    \par\ShowPar%
}{\myendpar\egroup}{}{}%




\begin{document}

\EndPreamble

उदाहरण को नमूना ODT टेम्पलेट फ़ाइल के साथ कमांड के साथ संकलित किया गया है:

  • एक लाइन खोल स्क्रिप्ट के भाग के रूप में: make4ht -u --config "myconfig.cfg" --format "odt+odttemplate" "$FILE" odttemplate="$BASEDIR/refTemplates/basic.odt"
  • या खिड़कियों पर एक बैट फाइल के हिस्से के रूप में: "%MikTexPath%%htxCompiler%" --config "myconfig.cfg" --format "odt+odttemplate" "%%~nxA" odttemplate="./refTemplates/basic.odt"

यदि मैं पूरी तरह से निशान से चूक गया हूं, तो मैं मौजूदा कमांड में शैलियों की मैपिंग कैसे बदल सकता हूं?

जवाब

1 michal.h21 Aug 18 2020 at 02:59

मुझे आपकी mwe.cfgमुख्य रूप से त्रुटियां मिलती हैं क्योंकि: आप अघोषित रूप से उपयोग करते हैं \Configure{SectionTitleTest}और इसके लिए पांचवां तर्क गायब है \Configure{section}

मैं आपकी फ़ाइल को निम्न सुधारों के साथ संकलित कर सकता हूं:

\Preamble{xhtml}
% to simplify the things
\def\myendpar{\ifvmode\IgnorePar\fi\EndP}

% configure the single line commands in Tex against their corresponding style in the template

%\Configure{SectionTitleTest}{\myendpar\HCode{<text:p text:style-name="section-title">}}{\HCode{</text:p>}}
\NewConfigureOO{section-title}
\ConfigureOO{section-title}{<style:style style:name="section-title" style:family="paragraph" style:class="text">
    <style:text-properties style:text-underline-style="solid"   
    style:text-underline-width="auto"
    style:text-underline-color="font-color"   
    />
    </style:style>}


\Configure{section}%
{\IgnorePar\EndP \HCode{<!--start of section-->}}%
{\IgnorePar\EndP \HCode{<!--end of section-->}}%
{\HCode{<text:h
        text:style-name="Heading 1"
        text:outlinelevel="2" ><text:span
        text:style-name="section" >}%
    %\TitleMark\space%
    \HCode{</text:span>}%
    %\IgnoreIndent%
}{\HCode{</text:h>}}%

% \Configure{section}
%    {\IgnorePar\EndP \HCode{<!--start of section-->}}
%    {\IgnorePar\EndP \HCode{<!--end of section-->}}
%    {\HCode{<text:h
%             text:style-name="\csname a:Heading-2\if@rl-rtl\fi\endcsname"
%                    text:outlinelevel="2" ><text:span
%                    text:style-name="section" >}\TitleMark\space
%     \HCode{</text:span>}\IgnoreIndent}
%    {\HCode{</text:h>\Hnewline}\par\ShowPar}


% configure the environments in Tex against their corresponding style in the template
\ConfigureEnv{test}%
{%
    \myendpar\bgroup%
    % when you want to modify the paragraph style, you must redefine the paragraph configuration to use the test style name
    \Configure{HtmlPar}%
        {\EndP \HCode{<text:p text:style-name="test">}}%
        {\EndP \HCode{<text:p text:style-name="test">}}%
        {\HCode{</text:p>}}%
        {\HCode{</text:p>}}%
    \par\ShowPar%
}{\myendpar\egroup}{}{}%


\ConfigureEnv{quote}%
{%
    \myendpar\bgroup%
    % when you want to modify the paragraph style, you must redefine the paragraph configuration to use the test style name
    \Configure{HtmlPar}%
        {\EndP \HCode{<text:p text:style-name="quote">}}%
        {\EndP \HCode{<text:p text:style-name="quote">}}%
        {\HCode{</text:p>}}%
        {\HCode{</text:p>}}%
    \ShowPar%
}{\myendpar\egroup}{}{}%


\begin{document}

\EndPreamble

एक और फिक्स जो मैंने जोड़ा है वह यह था कि मैंने इसे हटा दिया \parथा \ConfigureEnv{quote}, क्योंकि इससे दस्तावेज़ में दिखाया गया खाली खाली पैराग्राफ दिखाई दिया।

यह प्रदान किया गया दस्तावेज है: