[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] Org + MS DOC
From: |
Ken Mankoff |
Subject: |
[O] Org + MS DOC |
Date: |
Thu, 04 Feb 2016 13:26:34 -0500 |
User-agent: |
mu4e 0.9.16; emacs 24.5.1 |
Hi,
There is occasional discussion on the list (or SE or Reddit) about how to best
work with Word documents. In the past I've suggested Org -> Pandoc -> DOCX
because that worked best for me when producing documents with equations,
figures and tables. It didn't work great, but it worked best.
I've recently found a new workflow that seems much better, and wanted to let
others know about it. It removes the need for Pandoc and only uses Org and
LibreOffice.
1) Export to DOC (not DOCX) via ODT. Inline \(math\) in DOCX still looks pretty
bad, but is fine in DOC.
(require 'ox-odt)
(setq org-odt-preferred-output-format "doc")
(setq org-odt-convert-processes '(("LibreOffice"
"/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to
%f%x %i"))))
2) Run the following LibreOffice Macro to clean things up. I've assigned this
to a toolbar button to make it easy to access. Add strings you want to
disappear to "mTeXStringsNO" and pairs of strings you want converted to the
"mTeXStringsCNV" arrays.
3) Email to Word Users. I always email the PDF copy to so they can see the
(psuedo)canonical version of the document.
I hope this is helpful to some of you,
-k.
Sub ReplaceTeXStrings
Dim mTeXStringsNO(99) As String
Dim mTeXStringsCNVfrom(99) As String
Dim mTexStringsCNVto(99) As String
Dim n As Long
Dim oDocument As Object
Dim oReplace As Object
mTeXStringsNO() = Array("\(", "\)", "\ref", "\mathrm", _
"\begin{equation}", "\end{equation}", "\left", "\right", _
"\singlespacing", "\doublespacing")
mTeXStringsCNV() = Array("\sigma","σ", "\rho","ρ", "\sum","∑", _
"\phi","ɸ", "\partial","∂", "^{th}","th", "^{{th}}","th", _
"^{-1}","-1", "^{-2}","-2")
oDocument = ThisComponent
oReplace = oDocument.createReplaceDescriptor
For n = lbound(mTeXStringsNO()) To ubound(mTeXStringsNO())
oReplace.SearchString = mTexStringsNO(n)
oReplace.ReplaceString = ""
oDocument.replaceAll(oReplace)
Next n
For n = lbound(mTeXStringsCNV()) To ubound(mTeXStringsCNV()) Step 2
oReplace.SearchString = mTexStringsCNV(n)
oReplace.ReplaceString = mTexStringsCNV(n+1)
oDocument.replaceAll(oReplace)
Next n
End Sub
- [O] Org + MS DOC,
Ken Mankoff <=