Bagaimana cara mengubah .tex menjadi .odt?

43

Saya ingin mengonversi file .tex menjadi file .odt.
Bisakah Anda menyarankan solusi langkah demi langkah yang baik?

Tal Galili
sumber
3
@Naruto: Saya berasumsi itu adalah dokumen LaTeX.
Nathan Osman
4
Perhatikan bahwa untuk semua jawaban di bawah ini: tingkat keberhasilan Anda akan tergantung pada paket lateks yang digunakan, dan matematika tidak akan pernah setipe sebaik di lateks.
David LeBauer

Jawaban:

20

Percaya atau tidak, dengan dokumen yang kompleks dan banyak paket yang disertakan, saya mendapat hasil yang lebih baik dengan LaTeX2HTML dibandingkan dengan LaTeX2RTF, Pandoc atau TeX4ht.

latex2html texfile.tex -split 0 -no_navigation -info "" -address "" -html_version 4.0,unicode

Ini akan menghasilkan folder dengan texfilenama yang sama , sehingga Anda dapat mengonversi HTML yang dihasilkan ke ODT:

libreoffice --headless --convert-to odt:"OpenDocument Text Flat XML" texfile/index.html

Ini akan menghasilkan index.odtfile. Lihatlah jawaban ini untuk memeriksa cara menggunakan filter konversi LibreOffice.

Edit dari diskusi komentar:

Meskipun metode di atas berfungsi, sangat mengecewakan bahwa satu-satunya cara yang saya temukan untuk menghasilkan dokumen yang benar-benar dapat diandalkan adalah menggunakan output PDF dari LaTeX pada Adobe Acrobat Pro.

vmassuchetto
sumber
1
Untuk dokumen kompleks dengan banyak paket tambahan, file dan perintah LaTeX2HTML gagal. Saya mencoba untuk mengubah tesis saya ke HTML dan daripada ke ODT untuk memberikannya kepada seseorang untuk komentar dan koreksi, yang tidak terbiasa dengan LaTeX. Bahkan tanpa perintah khusus alat ini gagal. Paket Tikz untuk beberapa alasan adalah salah satu penyebab utama.
rbaleksandar
Tidak ada solusi ideal @rbaleksandar, khususnya tergantung pada paket yang Anda gunakan. Saya akan menyarankan Pandoc untuk Anda. Itu tidak akan menyimpan semua format, tetapi ia mampu mengabaikan beberapa struktur dan membangun dokumen akhir, setidaknya.
vmassuchetto
Tidak berfungsi dengan pagebreak.
Hi-Angel
Dokumen tidak pernah sempurna dengan solusi yang disajikan dalam pertanyaan ini. Sangat mengecewakan bahwa satu-satunya cara saya menemukan untuk menghasilkan dokumen yang sempurna adalah menggunakan keluaran PDF dari LaTeX dengan Adobe Acrobat Pro.
vmassuchetto
Perintah ini memberi saya omong kosong HTML, dan ODT omong kosong. Pandoc jauh lebih baik.
jdpipe
25

Ada alat di repositori yang mengubah LaTeX ke format XML openoffice.org: tex4ht Instal tex4ht

TeX4ht adalah sistem authoring berbasis TeX yang sangat dapat dikonfigurasi untuk menghasilkan hypertext. Ini berinteraksi dengan aplikasi berbasis TeX melalui file gaya dan postprocessor, meninggalkan pemrosesan file sumber ke kompiler TeX asli. Akibatnya, TeX4ht dapat menangani fitur sistem berbasis TeX pada umumnya, dan LaTeX pada khususnya.

TeX4ht dapat digunakan baik untuk menulis HTML menggunakan file input TeX / LaTeX, atau untuk mengubah file input TeX yang ada (dalam format apa pun) ke dalam HTML, dengan (biasanya) hanya modifikasi kecil. Variasi lain dari hypertext juga dapat diproduksi, termasuk XML, XHTML, MathML dan format XML Openoffice.org.

Garis komando...

  1. latex filename.tex
  2. bibtex filename.aux
  3. mk4ht oolatex filename.tex

Seharusnya berakhir dengan file yang kompatibel dengan openoffice.org/libreoffice.

Rinzwind
sumber
2
Terima kasih. BTW, tampaknya pengelola utama paket tersebut telah meninggal dua tahun lalu.
Tal Galili
2
Sangat disayangkan :(
Rinzwind
Saya setuju - Saya berharap komunitas yang lebih aktif akan mengambil sendiri untuk melanjutkan pekerjaan ini ...
Tal Galili
+1 untuk contoh baris perintah. Saya tidak punya waktu untuk membaca dokumentasi, tetapi contoh di atas cukup mudah diikuti.
antmw1361
Tidak berfungsi dengan pagebreak.
Hi-Angel
18

Solusi lain disediakan dari paket pandoc Instal pandoc

Sebagai contoh, Anda dapat melakukan:

pandoc -f latex -t odt -o output.odt input.tex

Jika file input latin1dikodekan, seperti file tex saya, solusinya adalah:

iconv -f ISO-8859-1 input.tex | pandoc -f latex -t odt -o output.odt

Saya melaporkan bagian dari deskripsi paket:

Pandoc adalah pustaka Haskell untuk mengkonversi dari satu format markup ke format lainnya, dan alat baris perintah yang menggunakan pustaka ini. Itu bisa membaca

  • penurunan harga dan
  • himpunan bagian dari
    • Teks terstruktur,
    • HTML, dan
    • Getah

dan itu bisa menulis

  • teks biasa,
  • penurunan harga,
  • Teks terstruktur,
  • HTML, -LaTeX, -ConTeXt,
  • RTF,
  • XML DocBook,
  • XML OpenDocument,
  • ODT ,
  • GNU Texinfo,
  • Markup MediaWiki,
  • EPUB,
  • Tekstil,
  • Halaman manual groff,
  • Emacs Org-mode, dan
  • Lambat atau
  • Tampilan slide S5 HTML.
enzotib
sumber
Setidaknya versi 1.14.0.4 tidak berfungsi dengan pagebreak.
Hi-Angel
Yang ini bekerja dengan sangat baik untuk saya ... Saya mendapat angka, judul tetapi tidak ada daftar pustaka, dan berbagai persamaan / simbol. Tapi setidaknya saya dengan cepat mendapatkan beberapa teks yang bisa mulai saya bersihkan secara manual.
jdpipe
8

Itu bisa dilakukan dalam 2 langkah. Pergi ke http://latex2rtf.sourceforge.net/ dan gunakan alat yang disediakan untuk mengkonversi pertama dari Lateks ke RTF dan kemudian dari RTF ke ODT.

Semoga ini bisa membantu.

Cormite
sumber
Tidak bekerja sama sekali 😂 Dengan contoh minimal itu menggantung selama satu menit dengan penggunaan CPU 100%. Saya tidak berpikir itu akan mengakhiri pekerjaan, jadi saya memotongnya.
Hi-Angel
Oke, saya berhasil berfungsi - mungkin tidak berfungsi dengan baik dengan makro - dan menemukan bahwa itu juga tidak berfungsi misalnya dengan daftar isi. Jadi tidak, bukan pilihan.
Hi-Angel
6

Jika Anda telah menginstal paket tex4ht Instal tex4ht , perintah oolatex filenamemengubah .tex menjadi .odt (untuk informasi lebih lanjut tentang tex4ht, lihat di sini ).

Cara lain adalah paket latex2rtf Instal latex2rtf , menggunakan RTF sebagai format perantara.

tohuwawohu
sumber
oh - maaf, belum melihat balasan lainnya ...
tohuwawohu
Tidak masalah karena Anda menambahkan tautan ke latex2rtf dan itu tidak ada dalam 2 jawaban lainnya;)
Rinzwind