将我的论文从一种 LaTex 格式重新格式化为另一种 LaTex 格式

将我的论文从一种 LaTex 格式重新格式化为另一种 LaTex 格式

我对 LaTex 还很陌生。我改用它的一个原因是,我可以根据不同出版商提供的模板轻松地重新格式化我的论文。

那么我还不知道 laTex 是否为我提供了这种便利。例如,假设我有一篇基于 IEEE 的 laTex 模板的论文。然后我想将其发送到另一本名为国际会计学会联合会,IJCA 给我他们特定的 LaTex 模板

将我的论文(IEEE 格式)转换为 XXX 格式最简单的方法是什么?有没有自动转换工具?我刚开始使用 WinEDT,可以编辑和编译 latex 文件,下一步该怎么做?

我举两个模板的例子

IEEE:

\author{\IEEEauthorblockN{Michael Shell}
\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\
Georgia Institute of Technology\\
Atlanta, Georgia 30332--0250\\
Email: http://www.michaelshell.org/contact.html}
\and
\IEEEauthorblockN{Homer Simpson}
\IEEEauthorblockA{Twentieth Century Fox\\
Springfield, USA\\
Email: [email protected]}
\and
\IEEEauthorblockN{James Kirk\\ and Montgomery Scott}
\IEEEauthorblockA{Starfleet Academy\\
San Francisco, California 96678-2391\\
Telephone: (800) 555--1212\\
Fax: (888) 555--1212}}

国际珠宝商协会:

\author{
   \large 1st Author \\[-3pt]
   \normalsize 1st author's affiliation  \\[-3pt]
    \normalsize 1st line of address \\[-3pt]
    \normalsize 2nd line of address \\[-3pt]
    \normalsize 1st author's email address \\[-3pt]
  \and
   \large 2nd Author \\[-3pt]
   \normalsize 2nd author's affiliation  \\[-3pt]
    \normalsize 1st line of address \\[-3pt]
    \normalsize 2nd line of address \\[-3pt]
    \normalsize 2nd author's email address \\[-3pt]
\and
   \large 3rd Author \\[-3pt]
   \normalsize 3rd author's affiliation  \\[-3pt]
    \normalsize 1st line of address \\[-3pt]
    \normalsize 2nd line of address \\[-3pt]
    \normalsize 3rd author's email address \\[-3pt]
}
.......
\section{USING THE  ijca Article  CLASS FILE}

If the file \verb ijcaArticle.cls  is not already in the appropriate system directory
for \LaTeX{} files, either arrange for it to be put there or copy
it to your working directory. The \verb ijcaArticle  document class is implemented
as a complete class, not a document style option. In order to
use the \verb ijcaArticle  document class, replace \verb article  by \verb ijcaArticle  in the
\verb \documentclass  command at the beginning of your document:
\vskip 6pt
\begin{centering}
    \verb \documentclass{article}  \end{centering}
\vskip 6pt
replace by
\vskip 6pt
 \verb \documentclass{ijcaArticle}  \vskip 6pt
In general, the following standard document \verb style  options should
{ \itshape not} be used with the {\footnotesize \itshape article} class file:
\begin{enumerate}
\item[(1)] \verb 10pt,  \verb 11pt,  \verb 12pt   – unavailable;
\item[(2)] \verb twoside  (no associated style file) – \verb twoside  is the default;
\item[(3)] \verb fleqn, \verb leqno, \verb titlepage – should not be used;
\end{enumerate}

\section{Additional Document Style Options}
\label{sec:additional_doc}
%

我对 latTex 标签不太了解,所以我更喜欢一个自动转换工具,它可以匹配标签并将它们相互转换。至少对它们进行预处理。

答案1

转换可能像第一行手动更改一样自动化articlepaper也可能是一场噩梦,或者根本就不可能。一般来说,自动转换是不可能的。

让我们用一个简单的例子作为问题的概念证明,使用非常标准的类book

\documentclass{book}
\begin{document}
\chapter{Hello}
\end{document}

完美运行。现在,想象一下你想将格式更改为另一个非常标准的类:

\documentclass{article}
\begin{document}
\chapter{Hello} 
\end{document}

但这个简单的文档无法编译。原因是“未定义的控制序列“读取错误\chapter。也就是说,LaTeX 对所谓的众所周知的命令一无所知\chapter。它不是在 TeX 引擎中硬编码的,而是在文档类中定义的book

这对于转换工具来说是个大问题。如果一个类()的命令book在另一个类()中没有定义,该怎么办article?只需将定义传递给新模板?在这种情况下没有意义。那么...忽略它?将标题向下一级?保留为粗体字体?

这意味着该工具必须为每个新类中的每个命令提供预定义的解决方案。

此外,在这种情况下,控制序列(命令)在文档类(文件)中定义(直接或不直接定义).cls,但定义也可以位于任何包含的包(.sty文件)或子.tex文件(\input{}例如,在序言中使用)中,或直接在序言中。

想想看,已知 CTAN 中数千个包的无数个控制序列......以及如何处理诸如用户定义的控制序列\def\myowncommand{Hello}

模板转换仅可在以下情况下进行编译:全部旧文档中使用的命令的定义(甚至是枯燥的 \myowncommand)在新模板中得到保留或重新定义。

有些命令适用于所有类型的文档,因为它们在 LaTeX 引擎中是硬编码的。这些主要是 TeX 基元,还有一些其他命令甚至可以在“非机密文件“。例如,使用 pdfLaTeXdocument,您可以制作仅包含以下内容的 PDF,例如:

% This is no a code chunk, but a complete MWE
\def\normalsize{\normalfont}
\begin{document}
Hello, {\em World}\par
Try me without a document class.
\end{document}

这里我们必须以\normalsize某种方式定义以避免初始化过程中出现错误,因为没有任何\documentclass,但是我们可以使用显然不属于任何类或包的命令。

该类minimal只不过是对 的 (重新) 定义 \normalsize,因此隐藏在 中minimal.cls。上述 MWE 几乎等同于:

\documentclass{minimal}
\begin{document}
Hello, {\em World}\par
Try me without a document class.
\end{document}

这个类对任何实际工作都没有任何用处,但向您展示了什么不是“普遍可访问的”命令。您可能会惊讶于命令\section{}在这里不能使用。然后\section{}是一个控制序列具体的某些类型的文档,没有任何模板的操作保证。

话虽如此,转换通常非常简单。使用非常具体的(用户定义的)命令时,您必须小心维护任何辅助文件,例如,主文档中 mymacros.tex的前言行或以 开头的前言定义,等等。\input{mymacros}\newcommand\def

很多时候,未定义但众所周知的命令的问题在于你在转换过程中丢失了某个包。也就是说,未定义\includegraphics意味着你\usepackage{graphicx}在前言中丢失了,所以这是一个很容易解决的问题。

如果不是直接加载包而是通过另一个包甚至原始模板的文档类来加载,那么困境就变得更加难以捉摸了,但是在对真正的根源进行一些研究之后,解决方案是一样的。

最糟糕的问题是命令是在文档类级别定义的,例如\chapter{},因为您无法在文档book中加载类article。幸运的是,大多数常用命令(例如)\section{}几乎在任何文档类中都有定义,因此实际问题仅限于一些不太标准的类的命令,例如类的 \institution{} paper,这些命令未在 article 和其他常见类中定义。

然后,对于未定义的命令(例如带有一个参数的命令 \xxx{}),解决方案可能是:

  1. 删除、注释或手动\xxx{}用其他命令替换每个命令,以严格遵循新模板。这可能是最好的解决方案。

  2. 从旧文档类中复制原始定义\xxx,并将其用于自定义类、包、序言或子文件中。但这只是问题的一部分。另一种方法是在不破坏其他任何东西的情况下做到这一点并破坏布局。如果您不知道自己在做什么,请不要尝试。

  3. 定义\xxx为简单且无害的事物。例如:

    • \newcommand\xxx{}(没做什么)
    • \newcommand\xxx[1]{#1}(将参数打印为纯文本)。检查结果后,尝试使用更详细的参数格式(例如,\newcommand\xxx[1]{\par\bfseries #1\par\bigskip}如果确实需要的话)修改您自己的定义。

最后,请考虑到期刊的编辑可能不会对第二或第三个解决方案感到满意。

答案2

一般来说,每个模板编写者几乎都可以做任何他们想做的事情。例如,我知道有人在每个段落之间强制使用一个特殊的段落命令。所以在最坏的情况下,这可能会很麻烦。

但在实践中,我认为你会发现,只需更改文档类别并做一些其他小事就足够了。

但我不认为这个问题有任何普遍的答案。

相关内容