[15:24] Post by Aragorn @ The West
[20:00] Lottoziehung in 03d 00:00h
[00:00] Songs gespielt gestern: 0
[20:00] Lottoziehung in 02d 00:00h
[00:00] Songs gespielt gestern: 0
[00:01] Alles Gute an Rainbow
Trackmania Minecraft Andere Spiele

MS-Word to LaTeX - die chinesische Version

01.12.09, 16:12:43
Zahl
Nachdem ich über eine Stunde vergeblich mit MS Word gekämpft habe, "mal eben" ein automatisches Inhaltsverzeichnis für die Arbeit einer Freundin zu erstellen, und dabei die Überschriften so zu formatieren wie es mir vorschwebte, erschien mir die anfangs doch recht absurde Idee, eine 100 Seiten lange Magisterarbeit mit knapp 300 Fußnoten etc. nach LaTeX zu portieren, immer sympathischer.

Gegen Abend habe ich dann zu Hause 20 weitere Minuten in die Recherche nach geeigneten Tools für dieses Vorhaben investiert. Sonderlich viel habe ich dabei nicht ans Tageslicht fördern können, bezüglich Erfahrungsberichten und Qualität. Zunächst habe ich mal wahllos irgend einen Treffer ausgewählt, heruntergeladen und gestartet. Das Ergebnis war allerdings sehr ernüchternd. Wüster, unstrukturierter Code, teilweise nicht compilierbar, teilweise mit kaputtem Ergebnis, sodass ich nach nicht mal einer Minute das Ergebnis samt Tool wieder von meiner Platte verbannt habe. Der Zweite Anlauf war Abiword, welches Dokumente auch nach .tex Exportieren kann. Das klang an sich vielversprechend. Ernüchterndes Ergebnis: Der Export war latin1 Müll, d.h. ich konnte die vielen Chinesischen Zeichen des Originaltextes im Datennirvana suchen. Sie wurden schlicht ignoriert.

Was generell auffiel war, dass es zwei Ansätze gab: Zum einen komplett eigenständige Tools, zum anderen welche, die MSWord benötigen, welches per Makro/Script/oä angesteuert wurde, um die Formatierung aus dem Dokument zu extrahieren. Nach den zwei vorherigen Reinfällen hatte ich einfach das Gefühl, dass dieser Ansatz klappen muss. Allerdings musste dies erstmal bis zum nächsten Tag warten, da ich auf meinem Rechner daheim kein MS Word habe. Meine Wahl fiel auf das Programm Word-to-LaTeX (Word-to-XML) Convertor. (Update Januar 2011: Das Tool ist leider nicht mehr kostenlos und hat nun einige nervige Einschränkungen. Die alte Version 1.2 kann man allerdings zur Zeit noch hier runterladen.)

Dann gings ans Testen. Nach einigen Versuchen haben sich folgende Einstellungen als recht brauchbar erwiesen:

Figures/Equation/Document
Image format: PNG

Misc
Unter Colors alles weg
Unter Paragraphs alles weg *
"Ignore empty paragraphs" aktivieren

Jetzt unter Configuration auf Save gehen, dann input und output document wählen, und starten...

* Macht man extensiven Gebrauch von Formatierungen sollte man das evtl. aktiv lassen. Da es sich hier aber zum 99% um reinen Text handelte, haben diese Optionen nur wirre Abstände und Vorschübe in den .tex Code eingefügt. Alles was ich übertragen wollte waren Fußnoten und kursiver Text - neben dem eigentlichen Text natürlich.


Der ganze Vorgang hat hier gute 15 Minuten gedauert, wobei der Rechner auch nicht mehr der neuste war. Das Warten hat sich jedoch gelohnt: Der .tex Code war verhältnismäßig klar und brauchbar, auch die chinesischen Schriftzeichen blieben erhalten und waren sogar schön UTF-8 codiert. Komischerweise wurden die Umlaute jedoch alle in \"a etc. umgewandelt, was bei utf8 gar nicht nötig ist. Aber suchen/ersetzen ist zum Glück in jedem Texteditor vorhanden
Die ein oder andere weitere Eigenheit musste dem erzeugten .tex Code noch ausgetrieben werden. Ein Beispiel dafür waren Textstellen in eckigen Klammern, hier wurden einige Vorkommnisse plötzlich in eine neue Zeile gesetzt und auskommentiert:
Code:
Ich bin ein Text mit [einem] Wort in Klammern.
wurde zu
Code:
Ich bin ein Text mit
%[einem]
Wort in Klammern.
Auch dieses Problem konnte zum Glück durch suchen/ersetzen (mit regexp) gelöst werden. In dem Zuge war es gleich recht klug, generell alle [ und ] durch \lbrack{} und \rbrack{} zu ersetzen, bevor da noch was falsch interpretiert wird später..
An andere Gegebenheiten erinnere ich mich nicht mehr im Detail, es war jedoch zu ertragen.

Die nächste Hürde ließ jedoch nicht lange auf sich warten: LaTeX kann gar keinen richtigen Unicode. Nichts mit Chinesisch?
Was für eine törichte Annahme, dass LaTeX, nur weil es utf8 unterstützt (\usepackage[utf8]{inputenc}), automatisch komplett mit Unicode umgehen kann.
Doch auch dieses Mankos haben sich glücklicherweise schon fähige Leute angenommen; die Lösung lautet XeLaTeX. Ist zum Glück auch bei MiKTeX dabei und die Anpassungen des Codes sind minimal.

Einige Header fliegen raus, andere kommen hinzu.
Folgende Packages haben Verwendung gefunden:
Code:
\usepackage{geometry} % Paket, was die Anpassung der Seitenränder ermöglicht
\usepackage{fontspec} % Paket für Verwendung anderer Schriftarten
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{ngerman} % Deutsche Silbentrennung, Designs (z.B. "Inhaltsverzeichnis" statt "Table of Contents")
\usepackage{hyperref} % Für Links (klickbare Fußnoten und Einträge im Inhaltsverz.)
\usepackage{setspace} % Damit man doppelten Zeilenabstand setzen kann
\usepackage{fancyhdr} % Zur Anpassung von Kopf- und Fußzeile
\usepackage{remreset} % Zum entfernen von automatischen Resets (hieß für den Fußnotenzähler benutzt)
\usepackage{graphicx} % Für Bilder
Als Codierung wird utf8 oder utf16 erwartet. Was jetzt allerdings noch fehlte, war eine Unicode Schritart, die sowohl die chinesischen Zeichen als auch das Basisalphabet (plus Umlaute) enthält, und vom Stil her Times New Roman entspricht, also eine Serifenschrift. Ein bisschen gegoogle enthüllte, dass hier eigentlich nur "Bitstream Cyberbit" in Frage kommt, da hier angeblich als einziges die chinesischen Zeichen professionell aussehen. Geladen, eingebaut, funktioniert!

... Zumindest auf den ersten Blick. Denn - wie soll es anders sein - die nächste Hürde ließ nicht lange auf sich warten.
Die Ausführungen der Schriftart für kursiv und fett fehlen. Während der Fettdruck aufgrund des Nichtvorkommens in der gegebenen Arbeit bleiben konnte, wo der Pfeffer wächst, war Kursivschrift durchaus wünschenswert.
Die Entscheidung fiel hier dann auf slant anstatt echter Kursivschrift, auch wenn das dem geschulten Auge durchaus negativ auffällt. Die einzige Alternative die mir einfiel was die Verwendung einer anderen Schriftart für alles Chinesische, und die Standardschrift für den Rest. Dies hätte dann aber für jedes Vorkommnis eine neue Umgebung gebraucht, allerdings wurde der Zeitliche Aufwand immer größer, und der Abgabetermin der Arbeit war nur noch 3 Tage hin.
Mit mehr Zeit bzw. besseren LaTeX-Kenntnissen hätte man das sicherlich auch besser lösen können. Ein eigenes \sonstwas{blabla} für Kursivschrift, welches dann einfach Times New Roman in kursiv benutzt, wäre im Nachhinein denkbar gewesen.

Die Lösung für slant sah im Header dann so aus:

Code:
\setmainfont[ % Schriftart fürs Dokument ändern
   ItalicFont=Bitstream Cyberbit, % Diese beiden Zeilen werden benötigt, um kurive Schrift
   ItalicFeatures={FakeSlant=0.25}, % zu "fälschen", da Cyberbit diese nicht enthält
   BoldFont=Bitstream Cyberbit, % Gleiches Spiel für fette Schrift
   BoldFeatures={FakeBold=0.6},
   Mapping=tex-text
]{Bitstream Cyberbit} % Hauptschriftart. Cyberbit sieht fast so aus wie Times New Roman,
% enthält aber auch asiatische Schriftzeichen etc.
% Die Schriftart muss man wahrscheinlich erst herunterladen. Das geht hier:
% http://aol-4.vo.llnwd.net/pub/communicator/extras/fonts/windows/Cyberbit.ZIP
% Danach die Datei entpacken, mit rechts anklicken, und "Installieren" wählen
Diverse andere Feinschliffe waren noch notwenig, von denen mir nun die meisten wohl schon wieder entfallen sind. Woran ich mich noch erinnere, waren zu viele Zeilenumbrüche am Ende von Fußnoten. Das sah dann so aus:
Code:
text text\footnote{Hier ist eine Fußnote
 
} weiterer text
Was im Ergebnis doch etwas merkwürdig aussah. Während des Umwandelns kam mir auch schon die Idee, dass man das alles in einem weiteren kleinen Tool oder Script automatisieren könnte um es für die Nachwelt festzuhalten, aber dazu fehlte mir in dem Moment einfach der Nerv. Vielleicht schafft dies irgendwann mal jemand anders, dem dieser Eintrag hier eine kleine Hilfe ist. Wenn man von Anfang an weiß, was auf einen zu kommt, ist man da motivierter.

Eine Eigenheit, die wohl nicht mit LaTeX zu tun hat war, dass ein bestimmtes Zeichen, nämlich jiang (将), in Cyberbit plötzlich falsch dargestellt wurde. Da ich selber von diesen Zeichen keinen Schimmer habe, kann ich nur die Information der Freundin weitergeben, dass es sich hierbei um die japanische Version des Zeichens handelt. Nach dem Kopieren in Wordpad und der Auswahl verschiedener Schriftarten musste ich feststellen, dass ich kein System dahinter sehe, wann welche Version angezeigt wird. Chinesisch: . Japanisch: . Auch die Auswahl verschiedener Scripte brachte keine Änderung. Nach ca. einer Stunde sinnlosem Probierens und Googlens sah mein Workaround nun so aus, dass bei den 3 Vorkommnissen des Zeichens einfach eine andere Schriftart, nämlich SimSun, verwendet wurde. Die chinesischen Zeichen in dieser Schriftart kommen vom Stil her sehr nah an die aus Cyberbit heran, sodass es beim Lesen nicht weiter auffiel, auch chinesisch-kundigen Leuten zufolge. Wenn hier jemand Licht ins Dunkel bringen kann, wär ich sehr interessiert.

Dies dürfte im Großen und Ganzen die gröbsten Hindernisse zusammenfassen, die beim Umwandeln und Zurechtformatieren auftraten.
Ich hoffe, dass dies vielleicht irgendwem einmal einiges an Recherche ersparen kann.


Hier nochmal der komplette verwendete Gerüst:
Code:
\documentclass[12pt,a4paper]{scrreprt}
% Schriftgröße 12, Papierformat A4, Dokumenttyp: Report
%
\usepackage{geometry} % Paket, was die Anpassung der Seitenränder ermöglicht
\usepackage{fontspec} % Paket für Verwendung anderer Schriftarten
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{ngerman} % Deutsche Silbentrennung, Designs (z.B. "Inhaltsverzeichnis" statt "Table of Contents")
\usepackage{hyperref} % Für Links (klickbare Fußnoten und Einträge im Inhaltsverz.)
\usepackage{setspace} % Damit man doppelten Zeilenabstand setzen kann
\usepackage{fancyhdr} % Zur Anpassung von Kopf- und Fußzeile
\usepackage{remreset} % Zum entfernen von automatischen Resets (hieß für den Fußnotenzähler benutzt)
\usepackage{graphicx} % Für Bilder
%
\makeatletter 
\@removefromreset{footnote}{chapter}  % Damit verhindern wir, dass der Fußnotenzähler bei jedem Kapitel wieder bei 1 beginnt
\makeatother
%
\setmainfont[ % Schriftart fürs Dokument ändern
   ItalicFont=Bitstream Cyberbit, % Diese beiden Zeilen werden benötigt, um kurive Schrift
   ItalicFeatures={FakeSlant=0.25}, % zu "fälschen", da Cyberbit diese nicht enthält
   BoldFont=Bitstream Cyberbit, % Gleiches Spiel für fette Schrift
   BoldFeatures={FakeBold=0.6},
   Mapping=tex-text
]{Bitstream Cyberbit} % Hauptschriftart. Cyberbit sieht fast so aus wie Times New Roman,
% enthält aber auch asiatische Schriftzeichen etc.
% Die Schriftart muss man wahrscheinlich erst herunterladen. Das geht hier:
% http://aol-4.vo.llnwd.net/pub/communicator/extras/fonts/windows/Cyberbit.ZIP
% Danach die Datei entpacken, mit rechts anklicken, und "Installieren" wählen
%
\setlength\parindent{0pt} % Kein Einzug bei neuem Absatz (wurde so gefordert)
\renewcommand*{\chapterheadstartvskip}{\vspace*{0pt}} % Etwas wengier Abstand über den Kapitelüberschriften
\newcommand{\br}{\hspace{0pt}} % Wir definieren den Befehl \br{} mit dem man in Chinesischem Text mögliche Umbrüche markieren kann
\newenvironment{hanging}[1][2em]{% Umgebung "hanging" für hängenden Einzug
  \addmargin[#1]{0pt}\setlength{\parindent}{-#1}\hspace*{-#1}%
  \ignorespaces
}{%
  \endaddmargin
}
%
\pagestyle{fancy} % Kopf und Fußzeile selbst definieren
\fancyhf{} % Keine Kopf- und Fußzeile
\renewcommand{\headrulewidth}{0pt} %obere Trennlinie ausblenden
\renewcommand{\footrulewidth}{0pt} %untere Trennlinie ausblenden
\fancyfoot[R]{\thepage} % Seitenzahl in der Fußzeile rechts
%
\geometry{a4paper,left=3.6cm,right=2.55cm,bottom=3.2cm} % Setzen der Seitenränder
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% Hier fängt das Dokument an %%%%%%
\begin{document}
\renewcommand*{\chapterpagestyle}{empty}
\input{0000_title} % Titelseite anzeigen
\thispagestyle{empty} % Keine Seitenzahl
\setcounter{page}{1} % Seitenzähler auf 1 zurücksetzen, Titelseite zählt nicht mit
\tableofcontents % Jetzt das Inhaltsverzeichnis
\thispagestyle{empty} % Hier auch keine Seitenzahl
\renewcommand*{\chapterpagestyle}{fancy} % Sonst haben Seiten mit neuem Kapitel den falschen Pagestyle
\pagebreak % Hier einen Seitenumbruch einfügen
\doublespacing % Jetzt auf doppelten Zeilenabstand umschalten, wie gefordert
%
\begin{sloppypar} % Erzwingt das Einhalten der Seitenränder, so wie MSWord
...
... % inputs oder includes
...
\end{sloppypar}
\end{document}
Compilieren dann einfach per xelatex maindoc.tex
Angehängte Grafiken
 

Lesezeichen

Stichworte
chinese, chinesisch, latex, unicode, utf8, word, xelatex
Kommentare (0)

Kommentar:
Benutzername: 
Email (nicht ausfüllen!): Sicherheitsgrafik


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Teamspeak 3

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51:07 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template-Modifikationen durch TMS
Die Betreiber haften nicht für die Inhalte der User. Die Beiträge spiegeln ausschließlich persönliche Meinungen wider, und nicht die der Seitenbetreiber.