使用以下方式转换为 ODTmake4ht

使用以下方式转换为 ODTmake4ht

我正在尝试将报告从 LaTeX 转换为开放文档(.odt)或开放 XML 文件(.docx)格式。但是程序会出错并停止,所以最终两种格式都没有写入。

首先我使用 Pandoc:

pandoc -f latex -t docx -o file.docx file.tex

但随后它会输出消息:

Error at "file.tex" (line 124, column 20):
expecting \end{figure}
\textsf{\large{}\includegraphics{pasted1}}{\large\par}

我修改了代码,并且有相应的\par,所以我试图删除这些标签,但它没有被编译。它说

unexpected {
\par\end{centering}

我再次修改了它,但中心位置写为\begin{centering}\par\end{centering}并且都是成对的,所以我找不到不匹配的地方

  • 选项 2:mk4ht 使用以下命令

    mk4ht oolatex 文件.tex

它开始编译,显示库和文件的列表,但它停止并输出:

?
! Emergency stop.
<inserted text>
                \par
l.25 \babel@aux{spanish}{}

Output written on file.dvi (53 pages, 15708 bytes).
Transcript written on file.log.
--- error --- failed to execute command

并且dvi文件无法打开。

开始时,Pandoc 说文件不是 UTF-8,请手动更改编码。TeX 文件很大,所以可能不适合在这里加载,我不知道哪些部分可能与发布相关。

那么如何进行调整以将某些内容转换为这些格式呢?

MWE(此文件是主 TeX 文件的一部分)

\documentclass[12pt,spanish]{article}
\usepackage[sc]{mathpazo}
\usepackage{helvet}
\usepackage{courier}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage[letterpaper]{geometry}
\geometry{verbose,tmargin=1.5cm,bmargin=1.5cm,lmargin=1.5cm,rmargin=1.5cm}
\setcounter{tocdepth}{2}
\usepackage{color}
\usepackage{babel}
\addto\shorthandsspanish{\spanishdeactivate{~<>}}

\usepackage{float}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage[unicode=true,
 bookmarks=true,bookmarksnumbered=true,bookmarksopen=true,bookmarksopenlevel=2,
 breaklinks=true,pdfborder={0 0 1},backref=false,colorlinks=true]
 {hyperref}
\hypersetup{pdftitle={Title},
 pdfauthor={Some_name},
 pdfsubject={opamp, feedback},
 pdfkeywords={opamp, feedback},
 linkcolor=black, citecolor=black, urlcolor=blue, filecolor=blue, pdfpagelayout=OneColumn, pdfnewwindow=true, pdfstartview=XYZ, plainpages=false}

\makeatletter
\pagenumbering{roman}
\let\myTOC\tableofcontents
\renewcommand\tableofcontents{%
  \pdfbookmark[1]{\contentsname}{}
  \myTOC
  \cleardoublepage
  \pagenumbering{arabic} }

\makeatother

\begin{document}
\listoffigures

\title{\textsf{\large{} Title}}
\author{\textsf{Bowie}\thanks{\textsf{\large{}\protect\href{mailto:[email protected]}{[email protected]}}}}

\maketitle
\textsf{\large{}\tableofcontents{}}{\large\par}

\section{\textsf{\large{}El amplificador operacional ideal}}

\subsection{\textsf{El amplificador operacional}}

\textsf{\large{}}\footnote{\textsf{\large{}footnote}}\textsf{\large{}.}{\large\par}

\textsf{\large{}Some text}{\large\par}

\textsf{\large{}More text }{\large\par}

\textsf{\large{}and more text}{\large\par}

\textsf{\large{}Again text}{\large\par}

\textsf{\large{}Bla... }{\large\par}

\subsubsection{\textsf{\large{}Notación}}

\textsf{\large{}
text added}{\large\par}
%here starts the problems
%the ouput is
%Error at "file.tex" (line 107, column 20):
%expecting \end{figure}
%\textsf{\large{}\includegraphics{pasted1}}{\large\par}
%
\begin{center}
\textsf{\large{}}
\begin{figure}[H]
{\centering}
\textsf{\large{}\includegraphics{pasted1}}{\large\par}
\par\end{centering}
\textsf{\large{}\caption{Caption of the figure}
\par}
\end{figure}
{\large\par}
\par\end{center}

\end{document}

更新

源代码是用 LaTeX 编译的,并生成了一个 PDF 文件,但查看日志我发现了以下信息(我认为相关的部分):

...
 restricted \write18 enabled.
 %&-line parsing enabled.
...
... no UTF-8 mapping file for font encoding PU
...
Package geometry Warning: The marginal notes overrun the paper.
     Add 11.32088pt and more to the right margin.
...
Output written on Intro.pdf (45 pages, 731901 bytes).
PDF statistics:
 565 PDF objects out of 1000 (max. 8388607)
...

并且在编译过程中提到了缺少$s、} 不需要的或没有 $ 以及缺失的字形(这是在终端中,我无法保存它,并且它不在日志中)。

我已经用其他 TeX 文件进行测试并且转换进展顺利。

更新2

我已经审查了这些图,并且我有以下代码(图的一部分)

\begin{center}
\textsf{\large{}}
\begin{figure}[H]
\begin{centering}
\textsf{\large{}\includegraphics{pasted1}}{\large\par}
\par\end{centering}
\textsf{\large{}\caption{Caption for the figure.}
}{\large\par}
\end{figure}
{\large\par}
\par\end{center}

定心和中心是成对的。所以我不知道为什么 MWE 会有所不同,但即使这样输出也是相同的。

更新 3

我修改了代码并修改了图表集,现在文档已成功转换为 .odt 和 .docx。唯一的问题是图表失去了编号和对齐。

答案1

使用以下方式转换为 ODTmake4ht

Todaymake4ht是实现此目的的最佳工具。照常编写 LaTeX 文件,但要避免使用奇特的语法,并删除所有对处理文件(即运行 latex 时不出错)并非绝对必要的包。忘记花哨的格式;保持简单。

然后你做如下事情:

latexmk -pdf file
make4ht -f odt file

您可以使用 LibreOffice 将生成的 ODT 文件保存为 DOCX 格式。(在某些设置中,您实际上可以在命令行上执行此操作。)

替代方案(更适合 HTML):lwarp

另一个选项是lwarp,它可以很好地生成 HTML(请参阅其文档以了解如何操作,非常简单)。在浏览器中打开 html 文件后,您可以从浏览器窗口复制并粘贴到 LibreOffice 中,结果还不错。不过,此设置中对脚注的不寻常处理对我来说是个大问题。

但用西班牙语比较难

即使我用正确合理的 LaTeX 代码重写了你的示例文档,我也遇到了问题,因为使用西班牙语babel与许多其他软件包的交互很差。

  • 我发现添加该es-sloppy选项可以解决大多数问题,因为可以禁用此 Babel 配置中启用的一些“额外”功能。但是,在使用 进行转换时make4ht,目录中仍包含写入 ODT 输出的不需要的垃圾代码。
  • 删除内容列表解决了问题,也许您可​​以在 ODT 输出中不用它们。(Libreoffice 确实有自己的生成内容列表的方法。)

babel关于西班牙语的一个单独问题make4ht是有道理的。

我认为以下文档涵盖了您要尝试做的大部分内容,并且可以毫无问题地编译为 PDF 并转换为 ODT。

\documentclass[letterpaper, 12pt]{article} 
\usepackage[T1]{fontenc}

% Because seems like you want a sans-serif typeface
\renewcommand*{\familydefault}{\sfdefault}

% Please note that the last option is necessary for conversion to work in
% Spanish
\usepackage[spanish,es-sloppy]{babel}

\usepackage{graphicx}
\usepackage{hyperref}

\title{Artículo}
\author{Bowie\thanks{\href{mailto:[email protected]}{[email protected]}}}

\begin{document}
\maketitle
% I can't get the contents lists to work in Spanish with make4ht
%\tableofcontents
%\listoffigures
\section{El amplificador operacional ideal}
\subsection{El amplificador operacional}
Algunas palabras.\footnote{Una nota.}
Más palabras.
Y más.
\subsubsection{Notación}
Añado algo más (vease figura \ref{fig:pasted1}).
\begin{figure}
    \label{fig:pasted1}
%    \includegraphics{pasted1} % I don't have the image to include
    \caption{Descripción de la imágen}
\end{figure}
\end{document}

答案2

我认为将 tex、PDF 文件转换为 word 或 libreoffice 格式 (.docx) 的最简单方法是使用此在线转换器https://pdf2docx.com

答案3

我成功地将 LyX 作为此目的的工具。尽可能保持 LaTeX 的格式简单。启动 LyX 并导入文件。然后导出为“打开文档(pandoc)”。然后,如果您愿意,可以使用 LibreOffice 转换为 doc。

答案4

MS Word 在导入 PDF 文档并将其转换为 .docx 方面表现相当不错。但它在处理高级图形和花哨的标题方面表现不佳。您只需在 MS Word 中打开 LaTex 的 PDF 输出并将其保存为 .docx 即可节省一些时间。

相关内容