首先推荐大家读一读这篇博文: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-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的文件:
质量已经下降的图片再经过一次转化(转化为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 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)
我在这里把破解步骤再演示一遍,先查壳:
去下载这两个东西:
.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
在左侧找到这个: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,有兴趣的可以尝试一下。