运行 biblatex 后,Xelatex 是否转换为 .doc/.odt/.rtf/.html?

运行 biblatex 后,Xelatex 是否转换为 .doc/.odt/.rtf/.html?

这个问题与这些论坛上发布的许多其他问题类似,但我看到的答案并没有解决我的问题(例如将 Latex 转换为 MsWord .doc 或 .rtf)。如果这是重复的,请原谅我,并指出解决方案的方向。我会感谢所有有想法的人。

简而言之,我之所以用 XeLaTeX 写论文,很大程度上是因为 biblatex 的灵活性。我从事的领域需要引用大量东亚资料,而让其他参考文献管理器正确地输出这些参考文献一直很困难。Biblatex 运行良好,我很遗憾放弃它。

但是,现在我已经完成了论文,我需要提交论文(和手稿)以供发表。在我这个落后的领域,这类论文通常需要以 Word 文档的形式提交。

我现在需要考虑是否可以将 Xelatex、biblatex 和我在论文期间创建的大型参考书目文件保留为工作流程的一部分——即使最终产品有时必须是 Word 可读和可编辑的文档。我知道有几个程序可以将未编译的 Xelatex 文档转换为其他格式(pandoc 等)。而且我知道 tex4ht 可以将一些 LaTeX 文档转换为 html 或 odt运行 biber。但由于我无法理解的原因(可能与 Tex4ht 和 xelatex 之间的不兼容性有关?),它似乎无法在我的计算机上运行。(我正在使用 MikTex 在 Windows 10 上工作。)

我需要制作的文档相当简单(尽管 cjk 书目需要一些定义才能工作)。我没有要包含的图表或图像:只有中文和日文文本。

这是一个极其简单的例子,我无法使用它。这是 latex 文件:

\documentclass{article}
\usepackage{xeCJK}
\setmainfont[Ligatures={Common, TeX}]{Times New Roman}
\setCJKmainfont[Scale=1]{SimSun}

\begin{document}

    Zhupo shihua 竹坡詩話

\end{document}

当然,这个极小的代码可以用 Xelatex 完美地编译成 pdf。当我运行 htlatex 时(即在命令提示符中,我输入:htlatex test.tex),我收到以下错误消息:

C:\Users\lbxxx>latex  \makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1.a.b.c.{\g@addto@macro\@documentclasshook{\RequirePackage[#1,html]{tex4ht}}\let\HCode\documentstyle\def\documentstyle{\let\documentstyle\HCode\expandafter\def\csname tex4ht\endcsname{#1,html}\def\HCode####1{\documentstyle[tex4ht,}\@ifnextchar[{\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode .a.b.c.\input  "C:\Users\lbxxx\Desktop\Tex Testing\onlinetest.tex"
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6300 64-bit)
entering extended mode
LaTeX2e <2017-04-15>
Babel <3.9r> and hyphenation patterns for 72 language(s) loaded.
! Undefined control sequence.
<*> ...}\makeatother\HCode .a.b.c.\input  C:\Users
                                                  \lbxxx\Desktop\Tex Testing...

?

我可以多次按下 r 键,但什么都没有出现。htxelatex 也是同样的情况。

当然,我希望以这种方式转换的实际文件要复杂得多。这是一个最小示例,这次包括脚注和参考书目(非常感谢 moewe 提供的大部分代码):

\documentclass{article}
\usepackage{xltxtra}
\usepackage[fallback]{xeCJK}
\usepackage{xunicode-addon}
\setmainfont[Ligatures={Common, TeX}]{Times New Roman}
\setCJKmainfont[Scale=1]{SimSun}

\makeatletter
\newcommand\blx@unitmark{23sp} 
\makeatother

\usepackage{filecontents}
\begin{filecontents*}{chicago-notes.dbx}
\ProvidesFile{chicago-notes.dbx}[2016/07/24 extended name format for biblatex]
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,cjk}
\end{filecontents*}
\begin{filecontents*}{\jobname.bib}
@book{zhaos,
  title={A Nation-State by Construction: Dynamics of Modern Chinese Nationalism},
  author={given=Suisheng, family=Zhao, cjk=趙歲升},
  isbn={9780804750011},
  year={2011},
  address = {Stanford},
  publisher={Stanford University Press}}
@book{ZhupoShihua,
    author = {family=Zhou, cjk=周紫芝, given=Zizhi},
    title = {Zhupo shihua},
    titleaddon = {竹坡詩話},
    series = {Yinying Wenyuange Siku quanshu edition},
    year = {1985},
    address = {Taibei},
    publisher = {Taiwan shangwu yinshu guan}
}
@book{jim,
  title={Lorem},
  author={Smith, Junior, Jim},
  year={2009},
  address = {Stanford},
  publisher={Stanford University Press}}
\end{filecontents*}

\usepackage[notes,strict,annotation,cmsdate=both,isbn=false, backend=biber]{biblatex-chicago}
\addbibresource{\jobname.bib}

% Based on definitions from biblatex.def

\newbibmacro*{name:cjk}[3]{%
    \usebibmacro{name:delim}{#2#3#1}%
    \usebibmacro{name:hook}{#2#3#1}%
    \mkbibnamefamily{#1}%
    \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
    \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnamecjk{#3}}}

\DeclareNameFormat{given-family}{%
  \ifdefvoid{\namepartcjk}
    {\iffirstinits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartcjk}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{family-given}{%
  \ifdefvoid{\namepartcjk}
    {\iffirstinits
        {\usebibmacro{name:family-given}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:family-given}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartcjk}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{family-given/given-family}{%
  \ifdefvoid{\namepartcjk}
    {\ifnumequal{\value{listcount}}{1}
        {\iffirstinits
           {\usebibmacro{name:family-given}
             {\namepartfamily}
             {\namepartgiveni}
             {\namepartprefix}
             {\namepartsuffix}}
          {\usebibmacro{name:family-given}
             {\namepartfamily}
             {\namepartgiven}
             {\namepartprefix}
             {\namepartsuffix}}
         \ifboolexpe{%
                     test {\ifdefvoid\namepartgiven}
                     and
                     test {\ifdefvoid\namepartprefix}}
           {}
           {\usebibmacro{name:revsdelim}}}
        {\iffirstinits
          {\usebibmacro{name:given-family}
             {\namepartfamily}
             {\namepartgiveni}
             {\namepartprefix}
             {\namepartsuffix}}
          {\usebibmacro{name:given-family}
             {\namepartfamily}
             {\namepartgiven}
             {\namepartprefix}
             {\namepartsuffix}}}}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartcjk}}%
  \usebibmacro{name:andothers}}

\DeclareFieldFormat[book]{title}{%
    \mkbibemph{#1}%
    \iffieldundef{titleaddon}{\isdot}{\nopunct}}

\DeclareFieldFormat{booktitle}{%
    \mkbibemph{#1}%
    \iffieldundef{booktitleaddon}{}{\nopunct}}

\DeclareFieldFormat{maintitle}{%
    \mkbibemph{#1}%
    \iffieldundef{maintitleaddon}{}{\nopunct}}

\DeclareFieldFormat[article]{title}{%
    \iffieldundef{title}{}{\mkbibquote{#1}}%
    \iffieldundef{titleaddon}{\isdot}{\nopunct}}

\DeclareFieldFormat{usere}{\mkbibparens{#1}}


\begin{document}
    \cite{zhaos,jim,ZhupoShihua}

    \cite{zhaos,jim,ZhupoShihua}\footnote{\cite{zhaos,jim,ZhupoShihua}}

    \printbibliography
\end{document}

所以,简而言之,有没有办法可以继续使用 biblatex 处理我的 cjk 材料,但输出为 .html、.odt、.rtf 或 .doc?我对最终文档的格式没有特别要求,只是文本需要在那里,脚注需要是脚注。请不要建议将最终的 pdf 转换为 word——我宁愿手动输入我所有的书目材料,也不愿处理由此引起的所有麻烦。

谁能解决这一问题我将永远感激他。

答案1

您的主要问题是您无法在编译中包含 TeX 文件。我无法重现此问题,我猜这是文件路径中的空格问题。

无论如何,一旦你设法真正编译你的文档,你就会遇到一些问题。软件包中有一些小问题,biblatex也有一些大问题xeCJK,这会导致tex4ht失败。这两个问题都可以通过一些自定义配置轻松解决。

将以下文件保存到您的文档目录中:

`usepackage.4ht`

% usepackage.4ht (2017-01-31-15:40), generated from tex4ht-4ht.tex
% Copyright 2003-2009 Eitan M. Gurari
% Copyright 2009-2017 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.
   \def\:temp{tex4ht}\ifx \:temp\@currname
   \:warning{\string\usepackage{tex4ht} again?}
   \def\:temp#1htex4ht.def,tex4ht.sty#2!*?: {\def\:temp{#2}}
\expandafter\:temp \@filelist htex4ht.def,tex4ht.sty!*?: %
\ifx \:temp\empty  \else
   \:warning{if
    \string\RequirePackage[tex4ht]{hyperref} or
    \string\usepackage[tex4ht]{hyperref} was
    used try instead, repectively,
    \string\RequirePackage{hyperref} or
    \string\usepackage{hyperref}}
\fi

\fi
\gdef\a:usepackage{\use:package xr,xr-hyper,savetrees,fontspec,xeCJK,biblatex,,!*?: }
\gdef\use:package#1,{%
   \if :#1:\def\:temp##1!*?: {}\else
      \def\:temp{#1}\ifx \@currname\:temp
             \def\:temp##1!*?: {\input usepackage.4ht  }%
      \else \let\:temp=\use:package \fi
   \fi \:temp}
\def\:temp{xr}\ifx \@currname\:temp
   \AtEndOfPackage{\let\XR:\XR@
   \def\XR@[#1]#2{%
    \Configure{AtBeginDocument}{\XR:[#1]{#2}}{}}%
}

\fi
\def\:temp{xr-hyper}\ifx \@currname\:temp
   \def\eat:optional[#1]{}
\AtEndOfPackage{\let\XR:\XR@
   \def\XR@[#1]#2{%
     \Configure{AtBeginDocument}{\XR:[#1]{#2}}{}\@ifnextchar[\eat:optional{}}%
}

\fi
\def\:temp{savetrees}\ifx \@currname\:temp
\:dontusepackage{savetrees}
\fi
\def\:temp{fontspec}\ifx \@currname\:temp
  \ifdefined\fontspec
    \:dontusepackage{fontspec}
  \else
    \input usepackage-fontspec.4ht
  \fi
\fi

\def\:temp{xeCJK}\ifx \@currname\:temp
\AtEndOfPackage{%
  \RequirePackage{fontspec}
}
\:dontusepackage{xeCJK}
\newcommand\setCJKmainfont[2][]{}
%\def\Hinput#1{}
%\input tuenc-xetex.4ht

\AtBeginDocument{%
\xeuniuseblock{CJK}
}
\fi

\def\:temp{biblatex}\ifx \@currname\:temp
\AtEndOfPackage{
  \def\blx@mknoautolang{%
    \blx@lbxinput{\blx@languagename}
    {}
    {}
}
}
\fi

\endinput

以及的配置文件biblatexbiblatex.4ht

% biblatex.4ht (2016-03-16-10:08), generated from tex4ht-4ht.tex
% Copyright 2007-2009 Eitan M. Gurari
% Copyright 2009-2016 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 2016-03-16-10:08}

   \ifdim\abx@version pt< 3pt \xdef\blx:ver:no{2}\else\xdef\blx:ver:no{3}\fi
\ifx\a:printshorthands\Undef\let\blx@shorthands\@empty\fi
\ifx\blx@startbib\:UnDef
 \pend:def\blx@shorthands{%
   \pend:def\blx@bibinit{%
       \HAssign\shorthands:cnt=0
       \NewConfigure{printfield-shorthand}{2}%
       \Configure{printfield-shorthand}%
         {\gHAdvance\shorthands:cnt by 1\relax
          \ifnum \shorthands:cnt=1 \a:printshorthands
          \else                    \c:printshorthands \fi
         }
         {\d:printshorthands}%
   \append:def\endtheshorthands{\b:printshorthands}%
   \csname a:@shorthands\endcsname}
}
\ifx\b:printshorthands\Undef\let\endtheshorthands\@empty\fi
\def\a:entryhead{CVR}
\def\a:entryhead:full{CV Radhakrishnan}
\ifx\bib@macro@entryhead:name\UnDef
  \let\bib@macro@entryhead:name\@empty\fi
\ifx\bib@macro@entryhead:full\UnDef
  \let\bib@macro@entryhead:full\@empty\fi
  \gdef\BibFileName[#1]#2{\expandafter\xdef\csname
       BibFileName#1\endcsname{#2}}
\newcount\sv:sec:cnt
\def\bibSecConfigure{%
  \let\save:section\section
  \global\sv:sec:cnt=\c@secnumdepth
  \def\section{\@ifstar
      {\c@secnumdepth=0\relax\save:section}%
      {\c@secnumdepth=\sv:sec:cnt\save:section}}%
}
\gHAssign\bibN=0
  \:CheckOption{ooffice}\if:Option
   \def\bibConfigure{\ConfigureList{thebibliography}%
      {\IgnorePar\EndP \gHAdvance\bib:N by 1
       \HCode{<text:bibliography text:name="bib-\bib:N" >
              <text:bibliography-source>\Hnewline
             <text:index-title-template>}
           \NoFonts\ref:name\EndNoFonts
       \HCode{</text:index-title-template>\Hnewline
%
           <text:bibliography-entry-template\Hnewline
            text:bibliography-type="custom1"
            text:style-name="Bibliography11">\Hnewline
%
            <text:index-entry-bibliography
             text:bibliography-data-field="identifier"/>\Hnewline
%
           <text:index-entry-span>: </text:index-entry-span>\Hnewline
           <text:index-entry-bibliography
            text:bibliography-data-field="author" />\Hnewline
           <text:index-entry-span>, </text:index-entry-span>\Hnewline
%
           <text:index-entry-bibliography
            text:bibliography-data-field="title" />\Hnewline
           <text:index-entry-span>, </text:index-entry-span>\Hnewline
%
           <text:index-entry-bibliography
            text:bibliography-data-field="year" />\Hnewline
           </text:bibliography-entry-template>\Hnewline\Hnewline
           </text:bibliography-source>\Hnewline
           <text:index-body>\Hnewline}%
         \let\en:bib=\empty
      }%
      {\en:bib\HCode{</text:index-body></text:bibliography>}}
      {\en:bib\gdef\en:bib{\HCode{</text:p>\Hnewline}}%
        \HCode{<text:p text:style-name="p-bibitem">}%
        \gHAdvance\bibN by 1
        \HCode{<text:reference-mark
          text:name="X0-\csname BIB-\bibN\endcsname">%
          </text:reference-mark>}%
      }%
      {}{}
  }

  \else
    \def\bibConfigure{%
  \ConfigureList{thebibliography}
  {\ifvmode \IgnorePar \fi \EndP \EndP
    \HCode {<dl class="thebibliography">}%
%
% This is for linking citations with biblist items which
% are in a different file when output is split into different
% chunks. [CVR 2012-09-27]
%
%
% <biblatex-2.2>
%
  \immediate\write\@auxout{%
      \string\BibFileName[\therefsection]{\FileName}}%
%
% </biblatex-2.2>
%
    \PushMacro \end:itm \global \let \end:itm =\empty}%
  {\ifvmode \IgnorePar \fi \EndP
    \PopMacro \end:itm \global \let \end:itm \end:itm \EndP
    \HCode {</dd></dl>}\ShowPar}%
  {\ifvmode \IgnorePar \fi \EndP \gHAdvance \bibN by 1
    \end:itm \global \def \end:itm {\EndP \Tg </dd>}%
    \HCode {<dt id="X\therefsection-\abx@field@entrykey"
      class="thebibliography">}\bgroup \bf}%
  {\ifvmode \IgnorePar \fi \EndP
    \egroup
    \HCode {</dt><dd\Hnewline id="bib-\bibN"
      class="thebibliography">}%
    \par \ShowPar}%
 }

 \fi
\NewConfigure{printshorthands}{4}
\NewConfigure{@shorthands}[1]{\concat:config\a:@shorthands{#1}}
\let\a:@shorthands\empty
\def\nolinkurl{\o:url:}
% \def\blx@checksum{\ifx \blx@checksum@old \blx@checksum@new \else
%   \blx@warning@noline {Page references have changed.\MessageBreak
%     Rerun to get references right}\@tempswatrue \blx@reruntrue \fi
%   \@nameuse {blx@rerun}}
\def\blx@checksum#1#2#3{%
  \begingroup
  \blx@tempcnta\the\numexpr0#2*0#3\relax
  \blx@tempcntb\blx@tempcnta
  \divide\blx@tempcntb10
  \multiply\blx@tempcntb10
  \advance\blx@tempcnta-\blx@tempcntb
  \xdef#1{#1\the\blx@tempcnta}%
  \endgroup}
\pend:def\blx@bibliography{\bibSecConfigure%
  \pend:def\blx@bibinit{%
    \bibConfigure
     \csname onthebibliography:list\endcsname
  }%
}
\let\en:bib\@empty
\newcounter{bib}
\ifnum\blx:ver:no < 3
 \protected\def\blx@bbl@entry#1#2#3{%
  \begingroup
  \def\texht@bibkey{#1}
  \edef\abx@field@entrykey{\detokenize{#1}}%
  \global\advance\c@bib 1
  \immediate\write\@auxout{\string\expandafter\string\gdef
    \string\csname\space BIB-\thebib\string\endcsname
     {\expandafter\strip@prefix\meaning\texht@bibkey}}%
  \Tag{)QX\therefsection-#1}{\thebib}%
  \blx@setoptions@type{#2}%
  \blx@bbl@options{#3}%
  \blx@setoptions@entry
  \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}%
  \csuse\blx@bbl@data
  \cslet\blx@bbl@data\@empty
  \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
  \blx@bbl@addfield{entrytype}{#2}%
  \blx@imc@iffieldundef{options}
    {}
    {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}
%
 \protected\def\blx@finentry{%
  \unspace
  \a:finentry
      \finentrypunct
      \blx@postpunct
  \b:finentry
  \blx@initunit
 }
%
\else
% Biblatex 3.0
%
% Hacks for biblatex
% MakeUppercase is redefined by tex4ht, biblatex tries to redefine it as well, but it relies on original
% LaTeX version:
\DeclareRobustCommand{\MakeUppercase}[1]{{%
    \def\i{I}\def\j{J}%
    \def\reserved@a##1##2{\let##1##2\reserved@a}%
    \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
    \protected@edef\reserved@a{\uppercase{#1}}%
    \reserved@a
}}
% Same applies also for \MakeLowercase
\DeclareRobustCommand{\MakeLowercase}[1]{{%
    \def\reserved@a##1##2{\let##2##1\reserved@a}%
    \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
    \protected@edef\reserved@a{\lowercase{#1}}%
    \reserved@a
}}

% I don't really understand this, but language processing is broken by default
% with biblatex. It loads language file, but it executes code which should be
% executed only in the case if the language file fails, it displays an error message
% and language handling doesn't work. When we execute following code, the language
% files are loaded before checking of the success and it seems to work.

\@ifpackageloaded{babel}
      {% This is required for languages which are never explicitly selected
        \def\do#1{\blx@lbxinput{#1}{}{}}%
       \ifdefined\bbl@loaded%
       \expandafter\docsvlist\expandafter{\bbl@loaded}%
      \fi}{}%



% Following macros doesn't seem to work with biblatex 3.4. We should make another test for
% biblatex > 3.0 and < 3.3
\ifdim\abx@version pt < 3.3pt
 \protected\def\blx@bbl@entry#1#2#3{%
  \begingroup
  \edef\abx@field@entrykey{\detokenize{#1}}%
  \blx@setoptions@type{#2}%
  \blx@bbl@options{#3}%
  \blx@setoptions@entry
  \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@slist@scheme
    @\abx@field@entrykey}%
  \csuse\blx@bbl@data
  \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
  \blx@bbl@addfield{entrytype}{#2}%
  \blx@imc@iffieldundef{options}
    {}
    {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}
%
 \protected\def\blx@bbl@endentry{%
  \csuse\blx@bbl@data
  \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey}
    {}
    {\blx@addpageref{\abx@field@entrykey}}%
  \nottoggle{blx@setonly}
    {\listcsxadd{blx@slists@\the\c@refsection @entry@\blx@slist@scheme}%
      {\abx@field@entrykey}}
    {\global\toggletrue{blx@addset}%
     \toggletrue{blx@skipbib}%
     \toggletrue{blx@skipbiblist}%
     \toggletrue{blx@skiplab}}%
  \nottoggle{blx@skipbib}
    {\listcsxadd{blx@slistsbib@\the\c@refsection @entry@\blx@slist@scheme}%
      {\abx@field@entrykey}%
     \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}%
       {\abx@field@entrykey}%
     \ifdef\abx@field@entrysubtype
       {\listcsxadd{blx@subt@\the\c@refsection
           @\abx@field@entrysubtype}%
         {\abx@field@entrykey}}
       {}}
    {}%
  \nottoggle{blx@skipbiblist}
    {\blx@bbl@labelfields}
    {}%
  \nottoggle{blx@skiplab}
    {\iftoggle{blx@labelnumber}
      {\blx@bbl@labelnumber}
      {}%
    \iftoggle{blx@labelalpha}
      {\blx@bbl@labelalpha}
      {}%
    \iftoggle{blx@labeltitle}
      {\blx@bbl@labeltitle}
      {}%
    \iftoggle{blx@labeltitleyear}
      {\blx@bbl@labeltitleyear}
      {}%
    \iftoggle{blx@labeldate}
      {\blx@bbl@labeldate}
      {}%
    \blx@bbl@prefixnumber}
    {}%
  \blx@bbl@titles
  \blx@bbl@hooks
  \endgroup}
  \fi
\fi % end of version boolean
\NewConfigure{finentry}{2}
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:printfield-#2\endcsname\relax
      \NewConfigure{printfield-#2}{2}%
      \a:printfield{printfield-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:printfield-#2\endcsname}%
       {\csname b:printfield-#2\endcsname}%
   \csname o:\string\blx@printfield:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@printfield\endcsname\:tempc
\NewConfigure{printfield}[1]{\def\a:printfield##1{#1}}
\Configure{printfield}{%
    \Configure{#1}%
       {\HCode{<!--#1-->}}%
       {\HCode{<!--/#1-->}}%
}
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:bibstring-#2\endcsname\relax
      \NewConfigure{bibstring-#2}{2}%
      \a:printfield{bibstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:bibstring-#2\endcsname}%
       {\csname b:bibstring-#2\endcsname}%
   \csname o:\string\blx@bibstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@bibstring\endcsname\:tempc
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:bibcpstring-#2\endcsname\relax
      \NewConfigure{bibcpstring-#2}{2}%
      \a:printfield{bibcpstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:bibcpstring-#2\endcsname}%
       {\csname b:bibcpstring-#2\endcsname}%
   \csname o:\string\blx@bibcpstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@bibcpstring\endcsname\:tempc
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:biblcstring-#2\endcsname\relax
      \NewConfigure{biblcstring-#2}{2}%
      \a:printfield{biblcstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:biblcstring-#2\endcsname}%
       {\csname b:biblcstring-#2\endcsname}%
   \csname o:\string\blx@biblcstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@biblcstring\endcsname\:tempc
\def\:tempc[#1]#2{%
   \expandafter\ifx \csname a:bibucstring-#2\endcsname\relax
      \NewConfigure{bibucstring-#2}{2}%
      \a:printfield{bibucstring-#2}%
   \fi
   \Configure{blx@unit}%
       {\csname a:bibucstring-#2\endcsname}%
       {\csname b:bibucstring-#2\endcsname}%
   \csname o:\string\blx@bibucstring:\endcsname[#1]{#2}%
}
\expandafter\HLet\csname\string\blx@bibucstring\endcsname\:tempc
\NewConfigure{biblatex-style}[2]{%
   \def\:temp{#1}%
   \ifx \:temp\blx@cbxfile
      #2%
      \global\let\biblatex:style\def
   \fi
}

\def\biblatex:style{}
\Configure{biblatex-style}{}{}

\pend:def\at:docend{%
   \ifx \UnDef\biblatex:style
      \:warning{\string\Configure{biblatex-style}{\blx@cbxfile}{...}
         not available}%
   \fi
}
\let\blx:item\@item
\def\@item[#1]{%
  \blx:item[#1]%
  \ifhmode \spacefactor\blx@sf@par\fi
}
\let\blx@resetpuncthook\@empty
\let\blx@csq@ifkernmark\@empty
\newskip\blx@unitmark
\blx@unitmark=10pt plus 1pt minus 1pt
\let\abx@aux@page\@gobbletwo
\let\abx@aux@fnpage\@gobbletwo
\let\abx@aux@refsection\@gobbletwo
%
% <[email protected]> reported that After updating
% biblatex and biblatex.ht to versions 2.2 respectively
% 2012-09-28-17:49 (using MiKTeX 2.9 64 bit), tex4ht seemed no longer
% respected the defernumbers option in biblatex.sty: When applied to
% the attached file tex4hterror.tex.
%
% The problem was due to nullifying \abx@aux@number which in fact
% should have been redefined to \blx@aux@number when defernumbers
% option is true.
%
% This is done now and as per Kristian, the fix works fine now.
%
\ifnum\blx:ver:no < 3
%
 \protected\def\blx@aux@number#1#2#3#4{%
  \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}%
  \ifblank{#4}%
    {}%
    {\csgdef{blx@labelnumber@#3}{#4}%
     %\blx@addchecksum{#1}{#4} % this can cause a nodocument error!
     }}
%
 \iftoggle{blx@defernumbers}%
    {\setkeys{blx@opt@pre}{labelnumber}%
     \let\blx@thelabelnumber\blx@addlabelnumber
     \let\abx@aux@number\blx@aux@number}%
    {\let\blx@thelabelnumber\relax
     \let\abx@aux@number\@gobblefour}
%
\else
  \def\@gobblefive#1#2#3#4#5{}%
 \protected\def\blx@aux@number#1#2#3#4#5{%
   \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}%
   \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}%
   \global\toggletrue{blx@localnumber}%
   \ifblank{#5}
    {}
    {\csgdef{blx@labelnumber@#3@#4}{#5}}}

 \iftoggle{blx@defernumbers}%
    {\setkeys{blx@opt@pre}{labelnumber}%
     \let\blx@thelabelnumber\blx@addlabelnumber
     \let\abx@aux@number\blx@aux@number}%
    {\let\blx@thelabelnumber\relax
     \let\abx@aux@number\@gobblefive}
\fi % end of version boolean
%
\AtEndDocument{%
  \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}%
  \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}%
}
%
\def\blx@begunit{%
  \toggletrue{blx@tempa}%
  \iftoggle{blx@insert}%
    {\iftoggle{blx@unit}%
       {\begingroup
          \let\blx@begunit\@empty
          \let\blx@endunit\@empty
          \let\blx@endnounit\@empty
          \blx@unitpunct\blx@postpunct
        \endgroup
        \global\togglefalse{blx@unit}%
        \togglefalse{blx@tempa}}
       {\blx@postpunct}%
     \iftoggle{blx@block}%
       {\begingroup
          \let\blx@begunit\@empty
          \let\blx@endunit\@empty
          \let\blx@endnounit\@empty
          \newblockpunct
        \endgroup
        \global\togglefalse{blx@block}%
        \togglefalse{blx@tempa}}%
       {}}%
    {}%
  \blx@postpunct
  \blx@resetpuncthook
  \iftoggle{blx@tempa}%
    {}%
    {\global\togglefalse{blx@insert}}%
  \csname a:blx@unit\endcsname
  \blx@leavevmode
  \blx@csq@ifkernmark
    {}%
    {\penalty\@M
    \hskip-\blx@unitmark\relax
    \hskip\blx@unitmark\relax
    }%
  \begingroup
    \Configure{blx@unit}{}{}%
}
\def\blx@endunit{%
  \endgroup
  \csname b:blx@unit\endcsname
  \Configure{blx@unit}{}{}%
  \ifdim\lastskip=\blx@unitmark
    \unskip\unskip\unpenalty
    \global\togglefalse{blx@lastins}%
  \else
   \global\toggletrue{blx@insert}%
   \global\toggletrue{blx@lastins}%
 \fi
}
\NewConfigure{blx@unit}{2}
%
   \else
\fi


   \NewConfigure{thebibliography}{4}
\append:def\blx@bibinit{\a:bibinit}%
\NewConfigure{bibinit}{1}%

   \let\blx@anchors\@empty
\let\bib@field@entrykey\@empty

\protected\def\blx@anchor{%
  \xifinlist{X\the\c@refsection -%@
    \bib@field@entrykey}{\blx@anchors}%
    {}%
    {\listxadd\blx@anchors{X\the\c@refsection -%@
      \bib@field@entrykey}%
     \hyper:natanchorstart{X\the\c@refsection -%@
      \bib@field@entrykey}%
     \hyper:natanchorend}}

\protected\def\blx@bibhyperref{%
   \@ifnextchar[%]
     {\blx@bibhyperref@i}%
     {\blx@bibhyperref@i[\bib@field@entrykey]}}%

\long\def\blx@bibhyperref@i[#1]#2{%
   \hyper:natlinkstart{X\the\c@refsection -%@
     #1}%
     #2\hyper:natlinkend}%

\protected\long\def\blx@bibhyperlink#1#2{%
   \hyper:natlinkstart{X\the\c@refsection -%:
     #1}%
     #2\hyper:natlinkend}%

\protected\long\def\blx@bibhypertarget#1#2{%
   \@bsphack
   \hyper:natanchorstart{X\the\c@refsection -%:
     #1}%
   \@esphack
     #2\hyper:natanchorend}%

\let\blx@ifhyperref\@firstoftwo

% Oleg Domanov [email protected] reports:
% tex4ht ends with an error when compiles biblatex files. I'm on
% Windows, texlive 2012. I put here a minimal example and files
% generated with the command latexmk test && mk4ht oolatex test
%
% https://www.dropbox.com/s/hn1zm40htqs13mf/t4htlink.zip
%
% There is a superfluous \relax in the file test.tmp, line 65 which
% seems to cause the error.
%
% Changes to cope with biblatex upgrade caused this problem. It is now
% fixed. --CVR 2012/10/26
%
\:CheckOption{ooffice}\if:Option
 \def\hyper:natanchorstart#1{\Link{}{#1}\EndLink}%
 \def\hyper:natlinkstart#1{\Link{#1}{}}%
\else
 \def\hyper:natanchorstart#1{%
      \expandafter\ifx\csname QXpage.\thepage\endcsname\relax%
        \Tag{)Qpage.\thepage}{\file:id}%
        \HCode{<a id="page.\thepage"></a>}%
        \expandafter\xdef\csname QXpage.\thepage\endcsname{0}%
       \fi
      \Link[\csname BibFileName\therefsection\endcsname]{}{#1}\EndLink}
 \def\hyper:natlinkstart#1{%
      \expandafter\ifx\csname QXpage.\thepage\endcsname\relax%
        \Tag{)Qpage.\thepage}{\file:id}%
        \HCode{<a id="page.\thepage"></a>}%
        \expandafter\xdef\csname QXpage.\thepage\endcsname{0}%
       \fi
      \Link[\csname BibFileName\therefsection\endcsname]{#1}{}}
\fi
\def\hyper:natanchorend{}
\def\hyper:natlinkend{\EndLink}
\def\writeCiteLink#1{\immediate\write\@mainaux{%
    \string\@namedef{#1.\thepage}{\FileName}}}
\let\blx@addpagesum\@gobbletwo
\let\nolinkurl\relax

\ifx\blx:ver:no < 3
%
% biblatex 2.9a
%
% Newly added to process {keylist} environment (CVR)
%
\let\keylist\description
\let\endkeylist\enddescription
\def\keyitem#1{\item[#1]}%
%
%
\else
%
% biblatex 3.0
%
\let\keylist\Un:def
\let\endkeylist\Un:def
\newenvironment*{keylist}
  {\list{}{%
     \setlength{\labelwidth}{1.25in}%
     \setlength{\labelsep}{10pt}%
     \setlength{\leftmargin}{0pt}%
     \setlength{\itemsep}{0pt}%
     \raggedright%
     \renewcommand*{\makelabel}[1]{\hss\bfseries##1}}}
  {\endlist}
%
\def\keyitem#1{%
  \item[#1]
  \begingroup
    \keyitemhook%
    \blx@bibinit%
    \midsentence\ifbibstring{#1}{}{\latintext}\biblstring{#1}%
    \expandafter\lbx@initnamehook\lsmartoftext%
    \par\nobreak
    \midsentence\ifbibstring{#1}{}{\latintext}\bibsstring{#1}%
    \expandafter\lbx@initnamehook\ssmartoftext%
  \endgroup
  \par\nobreak}
\fi  % End of version boolean

\ConfigureList{keylist}%
   {\EndP\HCode{<dl \a:LRdir class="description">}%
      \PushMacro\end:itm
\global\let\end:itm=\empty}%
   {\PopMacro\end:itm \global\let\end:itm \end:itm
\EndP\HCode{</dd></dl>}\ShowPar}%
   {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt
        class="description">}\bgroup \bf}%
   {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}}

   \let\:temp\do
  \def\do#1{%
    \patchcmd#1%
      {\color@begingroup}%
      {\color@begingroup\toggletrue{blx@footnote}}%
      {\togglefalse{blx@tempa}\listbreak}%
      {}}%
  \docsvlist{%
    \@footnotetext,%          latex
    \H@@footnotetext,%        hyperref
    \scr@saved@footnotetext,% koma-script 3.x
    \l@dold@footnotetext,%    ledmac
    \l@doldold@footnotetext,% ledmac
    \@fntORI}%                frenchle
\let\do\:temp

\Hinput{biblatex}
\endinput

htxelatex现在,我会使用而不是make4ht。 它更加灵活。 您将需要一个构建文件来启用biber编译并启用odthtml输出。 将以下文件另存为mybuild.mk4

Make:add("biber", "biber ${input}")

if mode:match "odt" then
  settings.tex4ht_sty_par = settings.tex4ht_sty_par .. ",ooffice" 
  settings.t4ht_par = settings.t4ht_par  .. " -coo -cooxtpipes"
end

if mode:match "draft" then
  Make:htlatex {}
else
  Make:htlatex {}
  Make:biber {}
  Make:htlatex {}
end

使用make4ht,您可以使用--mode-m命令行选项。这将选择要使用的编译顺序。您还需要使用-uUnicode 输出和-xXeLaTeX。基本编译如下:

make4ht -ux -e mybuild.mk4 filename.tex

这会将文档编译为 HTML,并在第一次 LaTeX 编译后运行biber。在后续编译中,当参考书目没有改变,因此不需要运行时biber,您可以使用draft模式:

make4ht -uxm draft -e mybuild.mk4 filename.tex

要获取 ODT 文档,您可以添加odt到草稿选项:

make4ht -uxm odt-draft -e mybuild.mk4 filename.tex

这是最终的 HTML:

在此处输入图片描述

编辑:

你的发行版似乎缺少一些随 发行的文件tex4ht,因此你可能还需要这个,usepackage-fontspec.4ht。帖子的字数好像有限制,所以只能上传到 Gist 了。

相关内容