Featured Post

We've moved to tex.my!

It’s been great writing on Blogger.com, but we’ve decided to move to a new platform, thanks to some valuable help from a great, great friend...

Showing posts with label multilingual. Show all posts
Showing posts with label multilingual. Show all posts

Tuesday, June 23, 2015

A multilingual, customisable CD/floppy disk jewel case calendar with LaTeX

This post is also published on the Overleaf blog.

LaTeX's versatility makes it a rather handy (and free!) tool for creating various goodies, including monthly calendars. So here's my stab at creating a LaTeX class and template for creating customisable, multilingual monthly calendars, that fit in CD or 3.5" disk jewel cases. Pictures and events can be added, and you can choose any month range for your calendar — it's not necessary that they begin on January and end on December.

You can make them for personal use, gifts or memorabilia for special events e.g. anniversaries. They may also be used for publicity or merchandise if you happen to be running a club or society.

For example, you could make a calendar showcasing birds frequenting your neighbourhood for your local birdwatching club. Work-wise, you might want to make a calendar for your journal paper reading group, highlighting important dates for assignments and conference submissions in your field in the coming semester.

Getting the Templates

You can clone the git repository on Bitbucket, or download a .zip file. Alternatively, you can also open and edit a CD-sized or floppy disk-sized calendar template on Overleaf.

The Monthly Calendars

The cdcalendar class will set up the calendar size to fit in a CD jewel case, and lay them out on an A4-sized paper:

\documentclass[12pt]{cdcalendar}
\begin{document}

%% June 2015
\monthCalendar{2015}{06}
\clearpage

%% July 2015
\monthCalendar{2015}{07}
\end{document}

If you want to make a smaller calendar to fit in 3.5" floppy cases instead, pass the small option to the cdcalendar class:

\documentclass[9pt,small]{cdcalendar}

For those who are interested in the technical details: the calendar is rendered with tikz, and the 2-up or 4-up layout is done with pgfpages.

Adding Illustrations

I've defined a \illustration command for adding graphics to each page of the calendar:

\usepackage{graphicx}

%% syntax: \illustration[caption]{width}{image-file-name}
\illustration[We had fun at the birthday party!]{8.5cm}{Party.jpg}

The image will be added at the top left of the current page. The original proportion will be preserved, so you do have to choose an illustration of appropriate proportions to fit the empty space.

Adding/marking events

You can mark events on each month using the \event command:

\event{2015-10-25}{Daylight saving time ends}

The event will be listed above the monthly calendar, and the date is circled in the calendar itself. Events must be given after the relevant \monthCalendar and on the same page.

If your event spans over several days, you can give the duration (in days) as an option to \event:

\event[5]{2015-07-26}{ACL 2015, Beijing}

Alternatively, you can also give the end date as the option instead:

\event[2015-07-31]{2015-07-26}{ACL 2015, Beijing}

Both forms of the command will give the same output.

If an event spans two months, e.g. \event[9]{2015-06-27}{Summer Camp}, you'll have to issue this command in both months i.e. once for June and once for July:

\monthCalendar{2015}{06}
\event[9]{2015-06-27}{Summer Camp}
\clearpage

\monthCalendar{2015}{07}
\event[9]{2015-06-27}{Summer Camp}
\clearpage

Multilingual Calendars

The dates, month names and weekday initials can be localised to languages that are supported by the babel, translator and datetime2.

For example, to get a calendar with Spanish dates, just pass spanish as a class option:

\documentclass[12pt,spanish]{cdcalendar}

We've tested the following language options: british, spanish, french, ngerman, italian, portuges, polish, croatian, greek.

Just remember to use LuaLaTeX to compile your project if it's in french -- it doesn't work well with PDFLaTeX, and XeLaTeX doesn't work well for this template.

Customising styles

The fonts and colours of most elements can be customised at any point in the calendar; take a look at the templates to see some examples. For convenience's sake, a \makeCover command (and the necessary metadata commands) is also provided.

It's been a lot of fun creating this template, and I'm sure you'll find many more uses for this calendar. Enjoy!

Sunday, June 3, 2012

More Ways to Typeset CJK

Rather a long time ago, I wrote about how to typeset CJK (Chinese, Japanese and Korean) in pdfLaTeX, using the CJK and ctex packages. However, the font choices are rather limited. With CJK, you have only the wadalab (3 Japanese fonts) and arphic (2 Simplified Chinese fonts, 2 Traditional Chinese fonts) packages and 1 Korean font. If you have access to Windows fonts, the ctex packages further configures 6 Chinese fonts shipped with Windows for use in pdfLaTeX (may also work with dvi output, but I didn’t test).


More Fonts in XƎLaTeX: xeCJK

If you’re willing to use XƎLaTeX, the xeCJK package makes it a breeze to typeset CJK, using any font (TTF or OTF) installed on your operating system. The following uses Chinese fonts typically found on a Mac:

\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}

% Sets font for Roman text.
% There are also \setsansfont, \setmonofont.
% See fontspec documentation.

\setmainfont{Baskerville}

% Traditional Chinese typesetting has no "bold" nor "italic".
% 黑体 ("blackbody") and 楷体 ("regular script") fonts are
% used instead.

\setCJKmainfont[BoldFont=Hei,ItalicFont=Kai]{STSong}
\setCJKsansfont{Hiragino Sans GB}
\setCJKmonofont{STFangsong}


\begin{document}
春眠不觉晓,\emph{处处}闻\textbf{啼鸟}。
\textsf{夜来风雨声,}\texttt{花落知多少?}
\end{document}

The fonts are identified by their names as displayed in your OS' font manager application. Here’s the output:




More Fonts in pdfLaTeX: zhmCJK

If you absolutely need to use pdfLaTeX instead of XƎLaTeX, the new zhmCJK package is useful for introducing more CJK font choices into you documents. It’s not included in MikTeX nor TeXLive, however; so you will have to download it from CTAN and install manually: read the instructions carefully.

The zhmCJK packages make use of the premise that all CJK fonts share the same metrics (note that this is not true for Japanese half-width characters! Use ptex if you have serious needs for Japanese typesetting), and can therefore create the NFSS font definition and actual font mappings dynamically. The consequence is that zhmCJK can use TrueType CJK fonts to generate PDF output with pdfTeX or with the dvipdfmx driver. Here’s an example:

\documentclass{article}
\usepackage{zhmCJK}
\setCJKmainfont[BoldFont=simhei.ttf, ItalicFont=simkai.ttf]{HanNomA.ttf}


\begin{document}
世界,你好!
\end{document}

You will need to pass the file name of the TTF font, which must have no space characters and only ASCII characters. And for LaTeX to find the TTF files, you need to do one of the following:
  • Set OSFONTDIR in texmf.cnf
  • Move or symlink the TTF file in TEXMF/fonts/truetype
  • Move or symlink the TTF file in the same directory as your document.

Thursday, August 26, 2010

Writing Systems and Calligraphy of the World

This post has nothing to do with LaTeX, but if you’ve enjoyed using LaTeX, I think you’ll enjoy reading about this very well-researched write-up about the various writing systems (scripts) (Part 1) (Part 2). Simply beautiful.

Friday, August 20, 2010

Tamil and Hindi Support in LaTeX

Doing a post on typesetting Tamil and Hindi is only natural after sorting out Jawi and CJK! Just after I managed to get them working using the itrans package and the devanagari fonts, this exact question was asked on the TeX-LaTeX Stack Exchange site, to which I posted what worked for me. So this post is essentially a re-write of my answers there.

(These instructions are LaTeX-only; I’ve not dabbled much in XƎLaTeX.)

Installation on Ubuntu (TeXLive)

This one’s easy. Grab the itrans and itrans-fonts packages for Tamil, and also the texlive-lang-indic package for the Hindi fonts via synaptic (or apt-get).

Installation on Windows XP (MikTeX)

Grab the devanagari package using MikTeX’s Package Manager. As for itrans, since it’s not packaged properly in MikTeX, so we’ll need to install it manually. Download itrans53-win32.zip from CTAN. After unzipping the contents (say C:\itrans53\), assuming <texmf> being your local TEXMF tree,

  • Move the contents of the lib folder into <texmf>\tex\latex\itrans
  • Move the contents of the fonts folder into the appropriate locations, i.e.
    • *.mf in <texmf>\fonts\source\itrans
    • *.afm in <texmf>\fonts\afm\itrans
    • *.tfm in <texmf>\fonts\tfm\itrans
    • *.pfb, *.pfa, *.pfm in &lt;texmf&gt;\fonts\type1\itrans
    • *.ttf in <texmf>\fonts\truetype\itrans
    • *.fd in <texmf>\tex\latex\itrans
  • Refresh the file name database (e.g. via MikTeX Options/Settings)

Using itrans

itrans doesn’t let you type in Tamil or Hindi (or Marathi, Sanskrit, Telugu and Gujarati) directly, rather you have to key in the ASCII transcription, then process it with itrans from the command prompt, then run (pdf)latex on the resultant file.

Say I have the following file indic-pre.tex:

\documentclass[11pt]{article}
\usepackage[preprocess]{itrans}

\newfont{\tmlb}{wntml12}
\newfont{\tmls}{wntml10}
\newfont{\devnf}{dvng10 scaled \magstep1}
#tamilifm=wntml.ifm
#tamilfont=\tmlb
#hindiifm=dvng.ifm
#hindifont=\devnf

\begin{document}
Thank you!
{#tamil na^nRi #endtamil}
{#hindi dhanyavaad #endhindi}
\end{document}

Process it with itrans: (Windows MikTeX users need to change path to itrans53\bin to evoke itrans.exe

$ itrans -i indic-pre.tex -o indic.tex

Then run (pdf)latex on indic.tex, which is of course the file to edit if you have further text to add. Here's the output of that little file:



Hold on! How’d you know you needed to type na^nRi etc?

I peeked at the transliteration map files ☺. For example, tamil.ps for the Tamil transliteration, dvng.ps for the Hindi (devanagari) transliteration, etc. If your LaTeX set up doesn’t install these files by default, you can download the package source .zip and look in the doc folder. The .itx files are sample source .tex files that generated the .ps files.

Monday, June 21, 2010

CJK support in LaTeX

(Oh gosh. This is one post I should have written a loooong time ago.)

Najmi has previous posted about Jawi support on LaTeX. Well then, what about CJK (Chinese, Japanese, Korean) characters?

(The process may be simpler using XƎLaTeX, but I personally use LaTeX more, so this post won’t touch on XƎLaTeX.)

Short snippets

If you need only short CJK snippets, use the CJK package. (While you’re at it, you may as well grab cjk-fonts and wadalab for the fonts.) On Debian-based systems, just grab latex-cjk-all and you should be good. Or if you don’t want the whole package (it’s huge), grab whatever you need for latex-cjk-chinese, latex-cjk-japanese or latex-cjk-korean (and whatever relevant font packages).

Here’s a basic example for Chinese:

\usepackage{CJK}
...
%% if your file is saved as GB simplified encoding
... as we say in Chinese,
\begin{CJK}{GB}{gbsn}子曰:有朋自远方来,不亦乐乎?\end{CJK}

%% if you file is saved as Big5 traditional encoding
... as we say in Chinese,
\begin{CJK}{Bg5}{bsmi}子曰:有朋自遠方來,不亦樂乎?\end{CJK}


But if you're saving as UTF-8 then you need CJKutf8.sty (included in CJK package):

\usepackage{CJKutf8}
...
as we say in Chinese,
\begin{CJK}{UTF8}{gbsn}子曰:有朋自远方来,不亦乐乎?\end{CJK}
or \begin{CJK}{UTF8}{bsmi}子曰:有朋自遠方來,不亦樂乎?\end{CJK}

You have a few font choices (make sure you get the latex-cjk-chinese-arphic-* files!)
  • gbsn (简体宋体, simplified Chinese)
  • gkai (简体楷体, simplified Chinese )
  • bsmi (繁体细上海宋体, traditional Chinese)
  • bkai (繁体标楷体, traditional Chinese)

Japanese and Korean text are typeset much the same way. If you save everything as UTF-8, then it’s just a matter of knowing what fonts to invoke:

\usepackage{CJKutf8}
...
%% Japanese
\begin{CJK}{UTF8}{min}
露の世は 露の世ながら さりながら
\end{CJK}

%% Korean
\begin{CJK}{UTF8}{mj}
편편황조 자웅상의 염아지독 수기여귀
\end{CJK}


The Japanese fonts are from the wadalab packages (latex-cjk-japanese-wadalab-*):
  • min (明朝 Mincho)
  • goth (ゴシック Gothic)
  • maru (丸ゴシック Maru Gothic)

As for Korean, well I’ve only been able to get mj (明朝体 MyongJu) working so far.

Entire Document in Chinese

On the other hand, if your entire document is going to be in Chinese, you might be better off using the ctexart document class (in the ctex package):

\documentclass[UTF8]{ctexart}

\begin{document}

\section{论语}
子曰:有朋自远方来,不亦乐乎?

\end{document}


There is a caveat, though. You’ll need to copy some Windows Chinese font files to your $localtexmf/fonts/truetype/... directory (don’t forget to run texhash!) to use ctex properly (font name in CJK/ctexart in brackets). These are all for simplified Chinese characters:
  • simsun.ttc 宋体 (song, default)
  • simfant.ttf 仿宋 (fs)
  • simkai.ttf 楷书 (kai)
  • simhei.ttf 黑体 (hei)
  • simli.ttf 隶书 (li)
  • simyou.ttf 幼圆 (you)

In any case, for more help on the ctex package and ctexart.cls, you’d best ask for help at the CTEX forum. (Language there is predominantly Mandarin Chinese.) I’m not aware of similar classes for Japanese nor Korean, though.

Pinyin and Ruby

Younger children learning Chinese characters (Hanzi/Kanji/Hanja) would often have the pronunciations annotated alongside/above/beneath the characters. For Chinese pinyin pronunciations, you would invoke

\usepackage{pinyin}
...\dian4 \deng1

to get diàn dēng.

To cite Martin Duerst:
Ruby are small characters used for annotations of a text, at the right side for vertical text, and atop for horizontal text, to indicate the reading (pronounciation) of ideographic characters.
And you can produce them with the ruby package:

\usepackage{CJKutf8,pinyin}
\usepackage[overlap,CJK]{ruby}
...

%% By convention, the pinyin would be *under* the Hanzi
%% so change the \rubysep to move it under

\begin{CJK}{UTF8}{gbsn}
\renewcommand\rubysep{-1.4em}
\ruby{电}{\dian4}\ruby{灯}{\deng1}
\end{CJK}

%% I find the default \rubysep (-0.5ex) too tight, so
%% let's enlarge it a little.

\renewcommand\rubysep{-0.2ex}

%% Shonen manga readers would get the written as
%% rival, pronounced as friend
 reference

%% (CORRECTED June 22)
\begin{CJK}{UTF8}{min}
\ruby{素敵}{ともだち}
\end{CJK}

%% Disclaimer: I'm actually unsure where the
ruby should be placed for Korean Hanja

\begin{CJK}{UTF8}{mj}
\ruby{南}{남}\ruby{宮}{궁}
\end{CJK}

The output of which looks something like this:

Thursday, October 8, 2009

Jawi support for Latex

Latex also supports Arab characters, and not only that it also supports Jawi (Malay flavors of Arabic characters). Called Arabtex, it was developed by Prof. Klaus Lagally at the University of Stuggart.

For the character mapping on how to make the Jawi characters appear on screen, you can refer here

Say we have the following

%specifying class
\documentclass{article}

%calling arabtex package.. you may need to install texlive-lang-arab

\usepackage{arabtex}
\begin{document}

%initializing Jawi char map
\setmalay

%since Jawi does not need vocalization
\novocalize
\huge

%I leave it blank, except date for header
\title{ <>}
\author{}
\date{<2009>}
\maketitle
%This is Jawi mode
\\

%Now let's see for Arab
\setarab
\fullvocalize

%This will enable transliteration, automatically!
\transtrue
\arabtrue
%Right to Left text will be append
\begin {RLtext}

al-salAm `alaykum\\
bismi al-ll_ahi al-rra.hm_ani al-rra.hImi
\end{RLtext}
\end{document}

Now let's see the output!