在Microsoft Word中以LaTeX方式键入数学公式吗?


66

我想知道是否有一些免费的解决方案可以在Microsoft Word文档(Office 2007)中以LaTeX方式键入数学公式?


内部公式编写器对您不起作用吗?每当我去做积分和/或求和时,它就非常方便。
kobaltz 2011年

2
与Latex相比,它非常慢。
蒂姆(Tim)

7
用LaTeX编写所有内容不是很简单吗?
NN


@NN我无法为Tim回答,但可悲的是,我必须在Word中写一篇文章。过去9年没有使用过该软件……
Hans Janssen

Answers:


70

如果您运行的是Office 365版本1707或更高版本,则可以使用“公式编辑器”将LaTex转换为本机格式。请参阅此答案的第一部分。

在Office的早期版本中,公式编辑器可以理解某些LaTeX组件。但是,它随您建立方程式,因此您无法转换整个LaTeX方程式。如果正在运行,请参见此答案的第二部分:

  • WinWord 2007、2010、2013和2016
  • MacWord 2011和2016

在Office 365版本1707或更高版本上

  1. 将公式编辑器置于LaTeX模式。在“公式编辑器设计”功能区中,转到“ 转换”组,然后单击“ LaTeX”

    公式编辑器-设计功能区上的“转换”组

  2. 输入LaTeX。

    输入LaTeX方程后

  3. 打开“ 转换”下拉菜单,然后单击“ Current-Professional”

    转换菜单,当前-专业

  4. LaTeX将被处理为公式编辑器的本机格式。

    结果方程

您还可以转换回LaTeX以编辑公式。

  1. 打开“ 转换”下拉菜单,然后单击“ 当前-线性”
  2. 该公式将转换回LaTeX格式。注意:这不是您原始的LaTeX来源,因为它已通过“公式编辑器”的内部格式来回移动。
  3. 打开转换下拉菜单,然后单击当前专业

您必须使用下拉菜单,因为“ 转换”按钮不会在Linear和Professional之间自动切换。它保留最后使用的命令。

有一些限制。例如,Office 365公式编辑器不了解\ begin\ end命令。请参阅Microsoft文档以获取示例和可能的解决方法:


在Office 2007-2016上(Mac Office 2011-2016)

很少有人意识到Word 2007中的内置方程式编辑器实际上了解LaTeX样式的方程式输入。只需插入一个新方程式,然后在其中键入LaTeX。键入时,Word将建立等式的图形表示。

Word 2007及更高版本中的LaTeX样式方程式条目

一旦它出现在GUI中,您就不能再将其编辑为LaTeX。Word没有嵌入式TeX处理器-它只是在进行模式匹配,以将简单的LaTeX语法转换为本机方程式格式。因此,您不应该期望对超复杂LaTeX方程获得完美的保真度。但是,对于数学家以外的任何人来说,这已经足够了,并且比用鼠标单击元素快得多。

Word 2007公式编辑器还具有线性公式输入格式,该格式相当直观,并且不需要熟悉LaTeX。例如,键入(a+b)/(c+d)将产生格式正确的分数。

Word 2007及更高版本中的线性方程式输入

笔记:

  1. 即使您另存为.doc而不是.docx,许多科学杂志也不接受采用新公式格式的Word文档。

  2. 这不会把Word变成LaTeX。它只是方程本身,而没有别的。您甚至没有得到方程式编号。


4
关键是LaTeX 风格,就像往常一样,ms拥有自己的“最佳”做事方式。+1信息,确实使您更容易陷入困境。
2013年

1
这不,我在公式编辑器在Word 2011年的工作
jvriesem

2
嗨,我不确定我做对了。我尝试对分数使用乳胶样式:\ frac {} {},但在等式字段中不起作用。
jxhyc 2015年

仍然不可用...
天光

1
Office 365版本仅适用于Word,不适用于ppt

23

在LaTeX中编写数学公式→在MathML代码中转换LaTeX公式→在Word中复制/粘贴MathML代码(粘贴后单击CTRL,然后单击T)。瞧!


例:

让我们以这个公式为例: 用LaTeX编写的公式

这是上述公式的LaTeX源代码:

0 \leq \lim_{n\to \infty}\frac{n!}{(2n)!} \leq \lim_{n\to \infty} \frac{n!}{(n!)^2} = \lim_{k \to \infty, k = n!}\frac{k}{k^2} = \lim_{k \to \infty}\frac{1}{k} = 0.

现在打开一个编辑器,将上面的源代码放在这样的符号$$ $$之间:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <title>tex texample</title>
</head>
<body>
    $$ 0 \leq \lim_{n\to \infty}\frac{n!}{(2n)!} \leq \lim_{n\to \infty} \frac{n!}{(n!)^2} = \lim_{k \to \infty, k = n!}\frac{k}{k^2} = \lim_{k \to \infty}\frac{1}{k} = 0.$$
</body>
</html>

将文件另存为.html文件,然后使用Chrome之类的浏览器将其打开。

右键单击该公式,然后选择将MathML显示为→MathML代码。

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mn>0</mn>
  <mo>&#x2264;<!-- ≤ --></mo>
  <munder>
    <mo form="prefix" movablelimits="true">lim</mo>
    <mrow class="MJX-TeXAtom-ORD">
      <mi>n</mi>
      <mo stretchy="false">&#x2192;<!-- → --></mo>
      <mi mathvariant="normal">&#x221E;<!-- ∞ --></mi>
    </mrow>
  </munder>
  <mfrac>
    <mrow>
      <mi>n</mi>
      <mo>!</mo>
    </mrow>
    <mrow>
      <mo stretchy="false">(</mo>
      <mn>2</mn>
      <mi>n</mi>
      <mo stretchy="false">)</mo>
      <mo>!</mo>
    </mrow>
  </mfrac>
  <mo>&#x2264;<!-- ≤ --></mo>
  <munder>
    <mo form="prefix" movablelimits="true">lim</mo>
    <mrow class="MJX-TeXAtom-ORD">
      <mi>n</mi>
      <mo stretchy="false">&#x2192;<!-- → --></mo>
      <mi mathvariant="normal">&#x221E;<!-- ∞ --></mi>
    </mrow>
  </munder>
  <mfrac>
    <mrow>
      <mi>n</mi>
      <mo>!</mo>
    </mrow>
    <mrow>
      <mo stretchy="false">(</mo>
      <mi>n</mi>
      <mo>!</mo>
      <msup>
        <mo stretchy="false">)</mo>
        <mn>2</mn>
      </msup>
    </mrow>
  </mfrac>
  <mo>=</mo>
  <munder>
    <mo form="prefix" movablelimits="true">lim</mo>
    <mrow class="MJX-TeXAtom-ORD">
      <mi>k</mi>
      <mo stretchy="false">&#x2192;<!-- → --></mo>
      <mi mathvariant="normal">&#x221E;<!-- ∞ --></mi>
      <mo>,</mo>
      <mi>k</mi>
      <mo>=</mo>
      <mi>n</mi>
      <mo>!</mo>
    </mrow>
  </munder>
  <mfrac>
    <mi>k</mi>
    <msup>
      <mi>k</mi>
      <mn>2</mn>
    </msup>
  </mfrac>
  <mo>=</mo>
  <munder>
    <mo form="prefix" movablelimits="true">lim</mo>
    <mrow class="MJX-TeXAtom-ORD">
      <mi>k</mi>
      <mo stretchy="false">&#x2192;<!-- → --></mo>
      <mi mathvariant="normal">&#x221E;<!-- ∞ --></mi>
    </mrow>
  </munder>
  <mfrac>
    <mn>1</mn>
    <mi>k</mi>
  </mfrac>
  <mo>=</mo>
  <mn>0.</mn>
</math>

现在,在Word 2013(或2007)中复制/粘贴MathML代码,并依次单击CTRL,然后单击T(“ 粘贴选项:仅保留文本”),或转到粘贴的MathML代码末尾的小Ctrl图像,然后手动选择选项。

这是公式在Word 2013末尾的样子:


转换后,括号的高度似乎全部相同。(考虑类似的东西d \left((a+b)+\frac{1}{c}\right)。)这是MathML的限制吗?
xzczd 2015年

1
这应该是最好的答案。
Vim

7

我已经根据答案创建了LatexToWordEquation

这是一个单词插件。

我推送到Github的源代码。连结这里

如果您愿意,可以直接从此处下载安装程序。
注意:这是一个活动的下载链接,单击该链接将立即下载文件。

怎么做


3
欢迎来到超级用户。人们非常注重安全性,并且在单击链接时会立即下载未知文件。最好在实时下载链接上包含一个通知。顺便说一句,读者可能不愿意下载未知文件,特别是从新用户那里下载。因此,如果链接没有太多动作,请不要亲自处理。无论如何,感谢您尝试解决此问题。
fixer1234

1
我在Word 2016中对其进行了测试。不幸的是,按下按钮没有任何作用。我是否需要安装任何东西才能使该解决方案正常工作?
RAnders00 '16

5

与Word中的Latex相比,我更喜欢TeXsword(TeXsword下载)。它具有Word中Latex的所有功能,并提供了对方程式引用的处理。而且它不需要Internet连接,我认为这不是一项功能限制:MikeTeX毕竟不是那么大,并且在本地拥有LaTeX可以让您在旅行时键入文档。


它支持Word 2013吗?
戴维

我在Word 2016中使用此插件,效果很好。
jdhao

4

您可以在Word中使用Latex

它提供了Microsoft Word的宏,这些宏允许使用LaTeX输入以内联和显示模式创建方程式图像,而不必在本地计算机上安装任何软件。据我所知,这是AuroraTexPoint等付费程序的唯一免费替代方案。

对于Office 2007,请转到Source Forge上Word项目页面中的Latex,然后单击Files下的Word 2007 。

Word中的LaTeX是GPL许可的工具,允许在Microsoft Word文档中使用方程式。该程序的客户端与说明一起在文档“ LaTeXinWord_v_0_3_1.docm”中作为VBA宏实现。因此,此文件包含源代码,实现和文档。


现在看来似乎不起作用。
jdhao

4

@Devid的回答很好,但是我在具体说明上有困难。这对我有用。通过复制MathML代码执行Devid的步骤。

然后,插入一个空白方程式。在Word 2013中,切换到“打印布局”视图(功能区上的“视图”选项卡)。在“插入”选项卡上,选择“方程式”。您将看到已Type equation here选择。

在“主页”选项卡上,选择“粘贴”下拉菜单,然后选择“选择性粘贴”(或点击CTRLALTV)。选择Unformatted Unicode Text. 然后应如Devid的最后一张照片一样正确地填写等式。

还有一件事-在图中,“ lim”命令以斜体显示,而不是原始命令。要解决此问题,对于每个“ lim”,请将光标放在“ m”之后,然后单击Space以使Word根据其功能表检查“ lim”并调整格式。(然后删除创建的多余空间。)


1

我编写了用于生成MathML的工具,改进了代码格式Devid,并添加了一些易于编辑的功能。这是代码:

    <!DOCTYPE html>
    <html>
    <head>
        <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
        <title>tex texample</title>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
        <script type="text/x-mathjax-config">
      MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
    </script>
<script>
    function SelectText(element) {
        var doc = document
            , text = doc.getElementById(element)
            , range, selection
        ;    
        if (doc.body.createTextRange) {
            range = document.body.createTextRange();
            range.moveToElementText(text);
            range.select();
        } else if (window.getSelection) {
            selection = window.getSelection();        
            range = document.createRange();
            range.selectNodeContents(text);
            selection.removeAllRanges();
            selection.addRange(range);
        }
    }
    $(document).ready(function(){
        $("#latexContent").val("$$  $$");
        $('#latexContent').bind('input propertychange', function() {
              $("#myoutput").text($("#latexContent").val());
             // MathJax.Hub.Queue(["TypeseTextt",MathJax.Hub,"myoutput"]);
              MathJax.Hub.Typeset("myoutput")
        });
        $("#btnShowMathML").click(function(){
            var con =  $(".MJX_Assistive_MathML").html();
            $("#myMathml").text(con);
            SelectText("myMathml");
        });
        $("#btnClear").click(function(){
            $("#latexContent").val("$$  $$");
            $("#myoutput").html("<p style='color: grey; font-style: italic;'> The LaTeX will display here ! </p>");
            $("#myMathml").text("");
        });

    });
</script>
    </head>
    <body>
        <center>
    <p> Enter LaTeX here! </p>
        <textarea id="latexContent" rows="5" cols="100"> </textarea>
    <button id="btnClear" type="button">clear</button>
    <button id="btnShowMathML" type="button">Show The MathML</button> </br></br>
    <span id="myoutput">
        <p style="color: grey; font-style: italic;"> The LaTeX will display here ! </p>
    </span> </br>
    <span id="myMathml"> </span>
</center>
    </body>
    </html>

将MathML转换为Word时,请确保使用Ctrl + Alt + V键复制纯文本(或首先将其复制到记事本,然后将其复制到Word)。


1

Word中LaTeX的默认服务器似乎不再运行。如果您被迫使用Word(例如,与技术水平较低的人合作),那么我将按照Adam的建议使用TeXsword。您需要安装一个独立的MikTex发行版,但是如今这很容易安装。它可以与我的Word 2016一起使用。它看起来还不如真正的LaTeX文档好,但它比Word中的方程式编辑器更易于使用和更具延展性。


请不要发布答案以同意其他答案或确认其有效。该站点的“问答”格式为该问题的解决方案保留了答案,每个答案都应提供另一个解决方案。表示答案有用的方法是在网站上花费一些时间,您将获得足够的特权来推荐您喜欢的答案。
fixer1234

1
我想评论说它可以在较新版本的word中使用(以回答Devid的问题),但没有特权。
mathisfun

请不要添加“谢谢”作为答案。在网站上花费一些时间,您将获得足够的特权来投票赞成您喜欢的答案,这是超级用户说谢谢的方式。
DavidPostill

0

上面提到的答案是正确的,但是还有一个内置的快捷方式,它是自动数学运算的。这很像LaTeX。默认情况下,它是不活动的,但是您可以激活它,如果您要编写大型方程式,则非常有用。例如,如果您想输入H 2而不是只需要输入H_2等,那么还有更多选项可用,例如,插入符号(^)后的上标字符将转换为上标。该视频介绍了许多此类快捷方式,或者您可以简单地搜索“ 如何在Ms-Office中插入数学方程式(如LaTeX): YouTube上的提示和技巧 ”。

如果您打字很快,此方法将特别有用。而且,它将节省您的时间,而这些时间在键盘和鼠标之间切换以及在Word中搜索适当的选项时会浪费掉。


陶岳在两年前的回答中提到了截图。
Ben Voigt 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.