Outils pour utilisateurs

Outils du site


issue52:c_c

LaTeX: Asian languages support I recently received an email from a reader, Chris, who can be found on launchpad.net as MrChris. He was asking me about Japanese input in LaTeX, as a follow-up to my article in FCM Issue #50. I didn't know the answer off the top of my head, but, together, we figured out a solution, which I felt I should share with anyone who may have the same question. Also, since the latex-cjk-* packages stand for “Chinese, Japanese, Korean”, I've covered (roughly) how to get each of the 3 languages working. Packages: texlive texlive-latex-extra latex-cjk-common latex-cjk-japanese latex-cjk-japanese-wadalab

LaTeX : support des langues asiatiques

J'ai récemment reçu un courriel d'un lecteur, Chris, qui peut être trouvé sur launchpad.net sous le pseudo MrChris. Il me posait des questions sur la saisie en japonais avec LaTeX, suite à mon article dans le numéro 50 de FCM. Je n'avais pas la réponse en tête, mais ensemble nous avons pensé à une solution et j'ai pensé que je devais la partager avec tous ceux qui peuvent avoir la même question. En outre, puisque les paquets latex-cjk-* signifient « en chinois, japonais, coréen », j'ai couvert (en gros) comment faire fonctionner chacune des trois langues.

Paquets : texlive texlive-latex-extra latex-cjk-common latex-cjk-japanese latex-cjk-japanese-wadalab

For Chinese (using Method #1 listed below), you'll also need: latex-cjk-chinese latex-cjk-chinese-arphic-gkai00mp For Japanese, I used the following template: http://pastebin.com/tasDkhZ3

Pour le chinois (en utilisant la méthode 1 ci-dessous), vous aurez également besoin de : latex-cjk-chinese latex-cjk-chinese-arphic-gkai00mp

Pour le japonais, j'ai utilisé le modèle suivant : http://pastebin.com/AWBQLYbx

\documentclass[12pt]{article} %——- \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage[english]{babel} %——- \usepackage[overlap, CJK]{ruby} \usepackage{CJKulem} \renewcommand{\rubysep}{-0.2ex} \newenvironment{Japanese}{% \CJKfamily{min}% \CJKtilde \CJKnospace}{} \begin{document} \parskip 3ex \parindent 0pt \begin{CJK}{UTF8}{} \begin{Japanese} 日本Linux : 愛してる。

(traduction française inchangée)

Note : English works too \end{Japanese} \end{CJK} writing English here is also possible but not Kanji and Furigana… \end{document}

Note : le français fonctionne aussi \end{Japanese} \end{CJK} on peut également écrire en français ici, mais pas de Kanji ni de Furigana… \end{document}

As a brief explanation to the code: \usepackage{ucs} – unicode support \usepackage[utf8x]{inputenc} – extended UTF-8 encoding (includes asian characters) \usepackage[english]{babel} – sets the typographical rules (in this case, to English). This includes, among others, where to break words if it flows over a line. By assigning a typographical set of rules that doesn’t apply to Asian characters, you ensure that groups of Kanji aren’t separated when breaking over a line. In using a language that doesn't support asian locale, you ensure that Kanji that need to be grouped together, aren't split.

Voici une brève explication de ce code :

\usepackage{ucs} – support de l'unicode ; \usepackage[utf8x]{inputenc} – encodage UTF-8 étendu (incluant les caractères asiatiques) ; \usepackage[french]{babel} – fixe les règles typographiques (dans ce cas, au français). Cela comprend entre autres les endroits où couper les mots lorsqu'on passe à la ligne. En attribuant un ensemble de règles typographiques qui ne s'appliquent pas aux caractères asiatiques, vous vous assurez que les groupes de Kanji ne seront pas séparés lors de la rupture d'une ligne. En utilisant un langage qui ne supporte pas la locale asiatique, vous vous assurez que les Kanji qui doivent être regroupés ne sont pas séparés.

\usepackage[overlap, CJK]{ruby} – This is the package required to get CJK working \usepackage{CJKulem} – Used for certain options for CJK \renewcommand{\rubysep}{-0.2ex} – changes the default spacing \newenvironment{Japanese}{\CJKfamily{min} \CJKtilde \CJKnospace}{} - This creates a new environment (like “document”, “enumerate”, “itemize”, etc.), which configures the options for Japanese input. The rest of the code is pretty self-explanatory. Once you compile the file, the PDF should contain the Japanese, in a nicely-formatted font. The only issue is that the text is not compiled top-to-bottom and right-to-left, as is the standard for Japanese. I haven't yet found a solution that works well for this. If anyone has a suggestion, feel free to pass it along.

\usepackage[overlap, CJK]{ruby} – c'est le paquet nécessaire pour faire fonctionner CJK \usepackage{CJKulem} – utilisé pour certaines options de CJK

\renewcommand{\rubysep}{-0.2ex} – modifie l'espacement par défaut \newenvironment{Japanese}{\CJKfamily{min} \CJKtilde \CJKnospace}{} - Cela crée un nouvel environnement (comme « document », « enumerate », « itemize », etc.), qui configure les options pour la saisie en japonais.

Le reste du code est assez explicite. Lorsque que vous compilez le fichier, le fichier PDF devrait contenir le japonais, dans une police joliment formatée. Le seul problème est que le texte n'est pas compilé de haut en bas et de droite à gauche, comme c'est la norme pour le japonais. Je n'ai pas encore trouvé de solution qui fonctionne bien pour cela. Si quelqu'un a une suggestion, n'hésitez pas à me l'envoyer.

For Chinese: Method #1: The same template that works for Japanese would work for Chinese too, with the following adjustments: \newenvironment{Chinese}{ \CJKfamily{gkai} \CJKtilde \CJKnospace}{} Also, the line “\begin{Japanese}” would logically have to be changed to “\begin{Chinese}”. Besides that, it will compile. As mentioned above, this will result in left-to-right and horizontal text. For top-to-bottom and right-to-left formatting, move on to Method #2.

Pour le chinois :

Méthode 1 :

Le même modèle qui fonctionne pour le japonais pourrait fonctionner pour le chinois aussi, avec les adaptations suivantes :

\newenvironment{Chinese}{ \CJKfamily{gkai} \CJKtilde \CJKnospace}{}

La ligne “\begin{Japanese}” doit logiquement être changée en “\begin{Chinese}”. En outre, il va falloir compiler. Comme indiqué plus haut, cela résultera en un texte qui va de gauche à droite et horizontalement. Pour un formatage de haut en bas et de droite à gauche, continuez avec la méthode 2.

Method #2: Disclaimer: I have not tried this method, nor do I know who originally wrote the script. However, Chris, the reader who originally posed the question, has tried it and gotten it to work, so I felt it deserved to be included here. Download the following script: http://scripts.sil.org/cms/scripts/render_download.php?&format=file&media_id=xetex_chinese_sample&filename=xetex_chinese_sample.zip According to Chris, he had to make the following changes: “Unfortunately, the uploader created it on a Mac where the fonts are different. However, in XeTeX you can specify fonts that are available in other programs and system-wide - so you can just pick a nice font in LibreOffice and specify that one.

Méthode 2 :

Avertissement : je n'ai pas essayé cette méthode et je ne sais pas qui a écrit le script au départ. Cependant, Chris, le lecteur qui a initialement posé la question, a essayé et réussi à le faire fonctionner, alors j'ai pensé qu'il méritait d'être inclus ici.

Téléchargez le script suivant: http://scripts.sil.org/cms/scripts/render_download.php?&format=file&media_id=xetex_chinese_sample&filename=xetex_chinese_sample.zip

Selon Chris, il a dû faire les modifications suivantes :

« Malheureusement, ce script a été créé sur un Mac, où les polices sont différentes. Cependant, dans XeTeX vous pouvez spécifier des polices qui sont disponibles dans d'autres programmes et pour le système tout entier, donc vous pouvez simplement choisir une jolie police dans LibreOffice et la spécifier ici.

After changing the fonts, using “xetex <file>.tex” [it] actually compiles successfully!” For Korean, the same method as used for Japanese can be used. You'd simply need to pick a font family for Korean, and install the following package: latex-cjk-korean Since I don't speak Korean, I haven't been able to try it out and find the correct font family, but I would suggest trying it without a font family specified, or else searching for a test document online.

Après avoir changé les polices, en utilisant « xetex <fichier>.tex » [il] compile avec succès !

Pour le coréen, la même méthode que celle utilisée pour le japonais peut être utilisée. Vous aurez tout simplement besoin de choisir une famille de polices pour le coréen, et d'installer le paquet suivant :

latex-cjk-korean

Comme je ne parle pas coréen, je n'ai pas pu essayer et trouver la famille de polices correcte, mais je suggère de l'essayer sans spécifier de famille de polices ou alors de rechercher un document en ligne pour essayer.

I hope you have found this article useful. If anyone has a specific issue (or question), you can reach me at lswest34@gmail.com. Please be sure to include “FCM” or “C&C” in the subject line, so that I don't overlook it. Any suggestions, or corrections, can also be emailed to me at the above address. If your enquiry requires a large excerpt of code, I would appreciate it if you would upload it to pastebin.com, or some other such site, and simply supply the link in the email. If the code isn't too long, please quote it or clearly denote the text from the email, in order to allow for quick referencing. References: * Original Japanese test document is from here: https://bbs.archlinux.org/viewtopic.php?pid=622937#p622937 * Information on UCS is from here: http://kile.sourceforge.net/Documentation/html/lang.html#ucs * A blog post by Chris on Japanese: http://blog.mindfall.net/?p=221 * A blog post by Chris on Chinese: http://blog.mindfall.net/?p=236

J'espère que vous avez trouvé cet article utile. Si quelqu'un a un problème spécifique (ou une question), vous pouvez me joindre à l'adresse lswest34@gmail.com. S'il vous plaît n'oubliez pas d'inclure « FCM » ou « C&C » dans la case Objet de sorte que je ne rate pas votre message. Toutes les suggestions ou corrections peuvent également m'être envoyées par courriel à l'adresse ci-dessus. Si votre demande nécessite un long extrait de code, je préférerais que vous le téléchargiez sur pastebin.com ou un site similaire et que vous m'envoyiez tout simplement le lien par courriel. Si le code n'est pas trop long, je vous prie de bien vouloir le séparer clairement du texte du courriel, afin de permettre le référencement rapide.

Références :

issue52/c_c.txt · Dernière modification : 2011/10/14 21:38 de fredphil91