如何将Word文件转化为Latex文件:word-to-latex-2.56详解

时间:2021-12-07 01:45:56

    首先推荐大家读一读这篇博文:http://blog.csdn.net/ibingow/article/details/8613556   

    Word转Latex软件word-to-latex 2.56破解版下载地址:https://pan.baidu.com/s/1kV7Wm2N 提取密码: 8h7m

    同时建议把这篇文章下载下来,如果将来某一天,word-to-latex被苏州思杰马克丁给侵占了,再想弄到免费的,就比登天还难了。
    不妨看看苏州思杰马克丁究竟是个什么东西:
    https://bbs.kafan.cn/thread-2095728-1-1.html
    https://bbs.kafan.cn/thread-2091302-1-1.html

----------------------------------------------------------------------------

    word-to-latex(官方下载地址:http://www.wordtolatex.com),顾名思义,是用来将doc和docx文件转化为tex文件的(其实还可以转化为xml文件)。有一个名称和word-to-latex很相似的软件,叫word2tex(下载地址:http://www.word2tex.com),百度搜索word转为latex,出来的结果大多是这个word2tex,遗憾的是word2tex只能支持到Microsoft Office 2010 32-bit,office 2013和2016以及64bit的office都不能用(本人亲测不能用),有些跟不上时代。不过它的官网上有另外一个好东西:Tex2Word.

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    word-to-latex可以支持64bit的office,可支持到office 2013 ,在office 2016上会出现:运行时错误‘429’:ActiveX部件不能创建对象。真可惜啊真可惜!

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    word-to-latex在win 10 x64上也能正常安装和使用(虽然它的官网上只提到win8没提到win10)。官网上还有一句提示:MathType is needed for converting MathType and Equation Editor equations!(要转换MathType和word公式编辑器的公式,必须安装MathType)

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    装好后进入安装路径(默认是C:\Program Files (x86)\Word-to-LaTeX)看一看,一共8个dll文件,其中6个是mathtype的(mt5.dll; mt6_7.dll; mt6_8_32.dll; mt6_8_64.dll; mt6_9_32.dll;mt6_9_64.dll;含义很明确,自己思考吧),话说你都把人家mathtype的文件复制过来了,为什么又要求用户装mathtype呢???另外两个名字很长的dll,是word-to-latex自己的,在后面要讲到的用.NET Reflector载入的就是这两个文件。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    再看看好压MD5校验的结果(注意观察dll文件的路径)以及文件的属性:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

     word-to-latex在安装过程中还可能出现如下问题:参数无效,操作无法完成(不知道怎么解决)

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    如果正常完成安装,那么在控制面板的“设备和打印机”中应该看到EPS打印机:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    个人认为,这个eps打印机没什么用处。图片插入word后默认会被压缩,word 2013最高支持220ppi的位图,(word 2016有所进步,最高支持330ppi的位图)。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    在此提供一个方法看看图片插入word后相较原图片究竟缩小了多少。把一个含有图片的docx文件的后缀docx改为zip(docx,xlsx,pptx文件本质上都是zip压缩包),用解压软件直接打开,可以看到三个文件夹(_rels,docProps,word)和一个名为[Content_Types].xml的文件:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    打开里面的word文件夹,再打开media文件夹,docx中的全部图片均在这个media文件夹里面,换句话说,这样便可以方便地提取一个docx文件中的全部图片,然后跟原始图片对比一下~

    质量已经下降的图片再经过一次转化(转化为eps格式),即使转化过程没有导致质量进一步下降,得到的图片也没有用处了。因为杂志社的要求是:有矢量图的就提供矢量图;若是位图,就提供未经压缩、未经格式转换的高清原图(分辨率不低于300dpi,最好600dpi)。综上所述,我建议你把Images的Action设置为Ignore,可以节省转换时间:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    word-to-latex正常完成安装后,在word中应该看到如下加载项:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    如果你没装word,貌似会出现如下问题:没有注册类;服务器运行失败。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    如果你用的是wps而不是word,貌似会出现如下问题:指定的参数数目与所需数目不匹配。(话说国外的软件开发者哪知道中国的wps呢!!!)

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    我有较大的把握认定word-to-latex必须依赖word,而不能独立运行,除了上面提到的症状(反正就是不能转换),还有一条理由:每次使用word-to-latex后,word的最近使用文件列表中就会增加一项名字为13位纯数字的文件。再把鼠标悬停上去看看这些文件的路径……

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    在word的VBA编辑器(按Alt+F11启动)中可以看到word-to-latex的Project,并且被锁定,“不可查看”。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    真的不能查看吗?呵呵!进入word-to-latex的安装路径(默认是C:\Program Files (x86)\Word-to-LaTeX),然后进入templates文件夹,找到Word-to-LaTeX.dotm,双击打开,然后word就变成这样:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    word-to-latex出现两次(看右上角),点“启用内容”,再按Alt+F11进入VBA编辑器,可以看到word-to-latex的project也出现了两次。其中一个可以查看,另一个还是锁定。进入:模块>Module1,

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    咱们来看一看它的代码:
-----------------------------------------------------------------------------------------------
Option Explicit
#If Win64 Then
    Private Declare PtrSafe Function ShellExecute _
      Lib "shell32.dll" Alias "ShellExecuteA" ( _
      ByVal hWnd As Long, _
      ByVal Operation As String, _
      ByVal Filename As String, _
      Optional ByVal Parameters As String, _
      Optional ByVal Directory As String, _
      Optional ByVal WindowStyle As Long = vbMinimizedFocus _
      ) As Long
#Else
    Private Declare Function ShellExecute _
      Lib "shell32.dll" Alias "ShellExecuteA" ( _
      ByVal hWnd As Long, _
      ByVal Operation As String, _
      ByVal Filename As String, _
      Optional ByVal Parameters As String, _
      Optional ByVal Directory As String, _
      Optional ByVal WindowStyle As Long = vbMinimizedFocus _
      ) As Long
#End If
'Callback for buttonWordToLaTeXConvert onAction
Sub actionWordToLaTeXConvert(control As IRibbonControl)
    Dim productKey As String
    Dim app As Object
    productKey = Application.ProductCode
    'If Mid(productKey, 21, 1) = "1" Then
    '    MsgBox "Word-to-LaTeX Add-in for Microsoft Word does not support Microsoft Office 2010 64bit." _
    '        & vbCrLf & vbCrLf & "Please run Word-to-LaTeX by clicking icon on your Desktop or in the Windows Start Menu." _
    '        , vbInformation, "Word-to-LaTeX"
    If Documents.Count = 0 Then
        MsgBox "No document is open.", vbInformation, "Word-to-LaTeX"
    Else
        If Not ActiveDocument.ReadOnly Then
            If Not ActiveDocument.Saved Then
                ActiveDocument.Save
            End If
        End If
        
        If ActiveDocument.Content.End <= 1 Then
            MsgBox "The document is empty.", vbInformation, "Word-to-LaTeX"
        ElseIf ActiveDocument.Saved Then
            Set app = CreateObject("WordToLatex.Gui.WLConvertorAddin")
            app.Startup Application, ActiveDocument
            app.Convert
            app.Shutdown
        Else
            MsgBox "Please save the document before running Word-to-LaTeX.", vbInformation, "Word-to-LaTeX"
        End If
    End If
End Sub
'Callback for buttonWordToLaTeXHelp onAction
Sub actionWordToLaTeXHelp(control As IRibbonControl)
    Dim lSuccess As Long
    lSuccess = ShellExecute(0, "Open", "http://www.wordtolatex.com/manual")
End Sub
'Callback for buttonWordToLaTeXUpload onAction
Sub actionWordToLaTeXUpload(control As IRibbonControl)
    Dim lSuccess As Long
    lSuccess = ShellExecute(0, "Open", "http://www.wordtolatex.com/upload")
End Sub
'Sub WordToLaTeX(inputFile As String, outputFile As String, optionsFile As String, basePath As String, log As Object, events As Object)
'    Dim convertor As Object
'    Set convertor = CreateObject("WordToLatex.WLConvertor")
'    convertor.Init inputFile, outputFile, optionsFile, basePath, log, Application, events
'    convertor.Convert
'End Sub
-------------------------------------------------------------------------------------------
    上面的代码的第二行,第三行:
#If Win64 Then
    Private Declare PtrSafe Function ShellExecute _
看到这两句,就知道这个软件为了支持64位的office,确实付出了努力。
    在第30行的注释中有一句略显奇怪(注意:不是代码!是注释!也可以说是作废的代码):

Word-to-LaTeX Add-in for Microsoft Word does not support Microsoft Office 2010 64bit. Please run Word-to-LaTeX by clicking icon on your Desktop or in the Windows Start Menu. 你在官网上不是说了支持office 2010的吗?难道是office 2010很特殊,你只能支持其32位版而不能支持其64位版?或者曾经不支持2010,现在进步了可以支持了,所以把以前写的代码加上注释符号相当于删掉?

    接下来解决关键问题:如何破解。(Of Course,本人已经制作好破解版了,不喜欢自己动手的就直接去下载:https://pan.baidu.com/s/1kV7Wm2N 提取密码: 8h7m)

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

我在这里把破解步骤再演示一遍,先查壳:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解
去下载这两个东西:
.NET Reflector (下载地址:http://www.red-gate.com/dynamic/products/dotnet-development/reflector/download)
Reflexil.Reflector.AIO.dll (下载地址:http://www.cr173.com/soft/62031.html ,这个dll文件是上面软件的插件)

    装插件:在.NET Reflector中,Tools>Add-Ins,再点右下角的“+”,然后选中Reflexil.Reflector.AIO.dll就ok.

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    有时候会出现:Could not load file or assembly 'file:///……(意思就是无法安装插件)

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    还有时候会变成中文:未能加载文件或程序集 'file:///……

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    真是“长太息以掩涕兮,哀吾生之多艰”,这应该是.NET Reflector本身的bug,解决方法是把Reflexil.Reflector.AIO.dll换个位置存放(比如说换到C盘、D盘的根目录,一定要多换几个位置试试)。插件装好后,把word-to-latex的安装路径(默认是C:\Program Files (x86)\Word-to-LaTeX)中的两个dll文件加进来,File>Open Assembly,选中word-to-latex-gui-lib.dll和word-to-latex-lib.dll,

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    在左侧的最下面找到word-to-latex-lib(2.56.0.0),左键单击选中它,然后Tools > Search,输入register

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    点右边第三个图标Search String or Constant,然后找到AboutForm_Shown,双击,再到下面找到isRegistered,点一下。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    在左侧找到这个:get_isRegistered():Boolean,(它的上一层是isRegistered:Boolean,左侧本来是+,点击+号展开,就能看到:get_isRegistered():Boolean),左键单击选中它,然后Tools >Reflexil v1.6(这就是之前安装的插件)

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    在Reflexil的面板上右键,replace all with code

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    把return后面的default(bool)改为true,注意行尾还有一个分号,不要删去分号。然后左下角Compile,再右下角OK.

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    在左侧找到word-to-latex-lib(2.56.0.0),左键单击选中它,然后右键,Reflexil v1.6 > Save as

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    它试图在C:\Program Files (x86)\Word-to-LaTeX中保存名为word-to-latex-lib.Patched.dll的文件,但是.NET Reflector 不是以管理员身份运行的,所有没有写入权限,随便换个地方保存就好了。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    注意保存时把名字改为word-to-latex-lib.dll(把Patched.删去),然后用这个修改过的dll文件替换C:\Program Files (x86)\Word-to-LaTeX中同名的dll文件,遇到“目标文件夹访问被拒绝”,“继续”即可。至此,大功告成。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    来欣赏一下成果:

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

    再看看这个软件的其它界面吧。

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如何将Word文件转化为Latex文件:word-to-latex-2.56详解如何将Word文件转化为Latex文件:word-to-latex-2.56详解

如果想知道该如何汉化这个程序,可以参看我的另一篇博客 http://blog.csdn.net/pijianzhirui/article/details/68948796


.NET 逆向工程工具还有 ILSpy,DotPeek,JustDecompile,CodeReflect,有兴趣的可以尝试一下。