Consider the MWE posted below (based on How does one type Chinese in LaTeX?) - you will need the simsun.ttc
font in the same directory.
First, in the MWE below (call it test.tex
) uncomment the \begin
/\end{filecontents*}
section, and compile with:
pdflatex test.tex && biber test && pdflatex test.tex
This will also generate the .bib - and everything should compile fine, and the Chinese text is selectable:
... and most importantly, the end of this compilation run reports this:
(./test.aux) ){/media/disk/texlive/2014/texmf-dist/fonts/enc/dvips/lm/lm-
ec.enc}<simsun.ttc><simsun.ttc><simsun.ttc><simsun.ttc></media/disk/texli
ve/2014/texmf-dist/fonts/type1/public/lm/lmbx12.pfb></media/disk/texlive/
2014/texmf-dist/fonts/type1/public/lm/lmr10.pfb></media/disk/texlive/2014
/texmf-dist/fonts/type1/public/lm/lmtt10.pfb>
Output written on test.pdf (1 page, 77939 bytes).
Transcript written on test.log.
That is - simsun.ttc
font is read in, as expected.
Now, let's try this with precompiled format "header"; first, comment back the \begin
/\end{filecontents*}
section, so it is exactly the same as the MWE (we won't need the .bib file, as it is already generated - and we won't need to run the biber
, as again the .bbl
file has been generated in the previous run).
First, generate the precompiled format:
pdflatex -ini -jobname="test" "&test" mylatexformat.ltx "test.tex"
Note at this point, in the log there is:
$ grep 'zhw\|simsun\|uniso' test.log
(/media/disk/texlive/2014/texmf-dist/tex/generic/zhmetrics/zhwinfonts.tex
Then, let's use the precompiled format to compile the doc:
pdflatex "&test" test.tex
Now, the compilation ends like this:
] (./test.aux) ){/media/disk/texlive/2014/texmf-dist/fonts/enc/dvips/lm/lm-ec.enc}
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 unisongsl7a
mktexpk: Running ttf2pk -q unisongsl7a 600
mktexpk: ~/.texlive2014/texmf-var/fonts/pk/modeless/zhmetrics/unisong/unisongsl7a.600pk: successfully generated.
<~/.texlive2014/texmf-var/fonts/pk/modeless/zhmetrics/unisong/unisongsl7a.600pk>
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 unisongsl65
^Ckpathsea: Appending font creation commands to missfont.log.
!pdfTeX error: pdflatex (file unisongsl65): Font unisongsl65 at 600 not found
==> Fatal error occurred, no output PDF file produced!
Now this is the thing: here I pressed Ctrl-C - but typically, pdflatex
would fail as mktexpk
would fail (I only got this to work after adding TEXFONTMAPS = .;$TEXMFDIST/source/fonts/zhmetrics;$TEXMF/fonts/map/{$progname,pdftex,dvips,}//
to texmf-dist/web2c/texmf.cnf
, and adding "Map ttfonts.map" to a new file $(kpsewhich --var-value=TEXMFLOCAL)/web2c/updmap.cfg
, then texhash
, then updmap-sys
- then it fails again w/ "ambiguous entry for 'cyberb@Unicode@': font file present but not included, will be treated as font file not present"; then remove the "Map..." line from updmap.cfg, then again updmap-sys - and only then can the mktexpk generate bitmaps for unisong).
But the problem is - I do not want to use unisong
(apparently, as it is a bitmap font, even if it can be generated, those glyphs are not selectable in the pdf); -- I want to use simsun.ttc
, as I did when not using the precompiled header ?!
So my questions are - what could possibly have made this font usage change when using a precompiled format file; and how can I get simsun.ttc
to be used also in the case of a precompiled format?
The MWE, test.tex
:
\RequirePackage{filecontents}
% %% NOTE: filecontents cannot be active when -ini runs; must be commented!
% %% NOTE: cannot use just {{文章}}, must add a \relax inside!
% \begin{filecontents*}{\jobname.bib}
% @misc{baiduweb,
% title = {{文章}\relax},
% author = {Baidu},
% url = {http://home.baidu.com/},
% year = {2015},
% }
% \end{filecontents*}
\documentclass{article}
\usepackage[%
style=ieee,
isbn=true,
doi=false,
url=true,
bibencoding=utf8,
backend=biber
]{biblatex}
% \addbibresource{\jobname.bib}
\bibliography{\jobname}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T2A, T1]{fontenc}
\usepackage[russian,greek,english]{babel}
\usepackage{CJKutf8}
% NOTE: this may require the font simsun.ttc in the same directory as this .tex file!
\AtBeginDvi{\input{zhwinfonts}} % MUST have! for \usepackage{CJKutf8}
% [http://lists.ffii.org/pipermail/cjk/2007-November/002045.html [Cjk] Problem with CJKchar]
\newcommand{\Chi}[2]{%
\csname CJK*\endcsname{UTF8}{zhsong}%
\CJKchar{#1}{#2}%
\csname endCJK*\endcsname
}
% 文: 0x6587
\DeclareUnicodeCharacter{6587}{\Chi{"65}{"87}} % YES!
% 章: 0x7AE0
\DeclareUnicodeCharacter{7AE0}{\Chi{"7A}{"E0}} %
\begin{document}
% macro test:
\Chi{"65}{"87}\Chi{"7A}{"E0} % ok
% direct unicode chars:
文章 % ok
Just a testing of citation here: \cite{baiduweb} ...
% % seems this with the environment is not really needed?!
% \makeatletter
% \let\CJK@ignorespaces\relax % else the below breaks..
% \CJK@envStart{}{UTF8}{zhsong}
% \makeatother
\printbibliography[resetnumbers]
% \makeatletter
% \CJK@envEnd{}
% \makeatother
\end{document}