我正在尝试将报告从 LaTeX 转换为开放文档(.odt)或开放 XML 文件(.docx)格式。但是程序会出错并停止,所以最终两种格式都没有写入。
- 选项1:潘多克
首先我使用 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 即可节省一些时间。