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

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

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

    同时建议把这篇文章下载下来,如果将来某一天,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),遗憾的是word2tex只能支持到Microsoft Office 2010 32-bit,office 2013和2016以及64bit的office都不能用(本人亲测不能用),有些跟不上时代。不过它的官网上有另外一个好东西:Tex2Word.



    word-to-latex可以支持64bit的office,可支持到office 2013. 在office 2016上会出现:运行时错误‘429’:ActiveX部件不能创建对象。解决方案参看我写的这篇博客 http://blog.csdn.net/pijianzhirui/article/details/79534615


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


    装好后进入安装路径(默认是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载入的就是这两个文件。


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



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



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


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


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


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

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


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


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



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


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


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


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


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


    咱们来看一看它的代码:
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 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
   

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


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


去下载这两个东西:
.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.


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


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


    真是“长太息以掩涕兮,哀吾生之多艰”,这应该是.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-to-latex-lib(2.56.0.0),左键单击选中它,然后Tools > Search,输入register



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


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



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


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


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


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


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



    来欣赏一下成果:


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





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


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

猜你喜欢

转载自blog.csdn.net/pijianzhirui/article/details/50614692