怎样将word文件转化为Latex文件:word-to-latex-2.56具体解释

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

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

    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-to-latex能够支持64bit的office。可支持到office 2013 ,在office 2016上会出现:执行时错误‘429’:ActiveX部件不能创建对象。真可惜啊真可惜!


    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,貌似会出现例如以下问题:没有注冊类;server执行失败。



    假设你用的是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 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,如今进步了能够支持了,所以把以前写的代码加上凝视符号相当于删掉?



    接下来解决关键问题:How to crack.(Of Course。本人已经制作好破解版了,不喜欢自己动手的就直接去下载: http://pan.baidu.com/s/1sksZsst,另外,破解步骤已经录下来了。想看的能够上优酷看:http://v.youku.com/v_show/id_XMTQ2MDAzMzUzMg==.html )


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


去下载这两个东西:
.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 逆向project工具还有 ILSpy。DotPeek。JustDecompile。CodeReflect,有兴趣的能够尝试一下。

posted @ 2017-08-04 09:42  zsychanpin  阅读(2478)  评论(1编辑  收藏  举报