cht電腦資訊文書排版TeXTeX Tips
adm Find login register

使國字帶有注音符號(chitex)

yih
1 使國字帶有注音符號(chitex)
Promote 1 Bookmark 12008-12-11quote  

 

在 
   http://blog.bs2.to/post/EdwardLee/6091

中, Edward 曾提出有關注音符號排版的作法,

在 chitex 有另外的方法, 可以不受中文字型的不同與大小的影響

其中用到 \chvertical (直排) \rotatebox

及 \ch@fntdimone (chitex 中取出字型之 pt)

下列是在 chitex unix 版中的 例子: 

   
\documentclass[12pt]{article}
\usepackage{graphicx}

\begin{document}

\makeatletter
\newskip\ch@dimtmpb
\newskip\ch@dimtmpc
\newskip\ch@dimtmpd
\newskip\ch@dimtmpe
\newskip\ch@dimtmpf
\newskip\ch@nraise

\newbox\ch@nboxa
\newbox\ch@nboxb

\def\chcheck#1{%
\setbox\ch@nboxa\hbox{ㄑ}%
\setbox\ch@nboxb\hbox{#1}%
\ch@dimtmpb=\wd\ch@nboxa%
\ch@dimtmpc=\wd\ch@nboxa%
\ch@dimtmpd=\wd\ch@nboxa%
\divide\ch@dimtmpb by 2%
\multiply\ch@dimtmpc by 3%
\multiply\ch@dimtmpd by 2%
\ch@dimtmpe=\wd\ch@nboxb \advance\ch@dimtmpe by -\ch@dimtmpc%
\ifdim\ch@dimtmpe < 0pt \multiply \ch@dimtmpe by -1 \fi%
\ch@dimtmpf=\wd\ch@nboxb  \advance\ch@dimtmpf by -\ch@dimtmpd%
\ifdim\ch@dimtmpf < 0pt \multiply \ch@dimtmpf by -1 \fi%
\ifdim\ch@dimtmpe < \ch@dimtmpb%
\def\ch@chkount{3}%
\else%
\ifdim\ch@dimtmpf > \ch@dimtmpb%
\def\ch@chkount{1}%
\else%
\def\ch@chkount{2}%
\fi%
\fi}


\def\ch@koa{1}
\def\ch@kob{2}
\def\ch@koc{3}


\def\chsetmag#1{\ch@fntdimtmpa=\ch@fntdimone%
\multiply\ch@fntdimone by #1\divide\ch@fntdimone by 1000}%


\def\BPM#1#2#3{%
\chcheck{#2}%
\def\ch@ntmp{}\def\ch@ttmp{#3}%
#1%
\ifx\ch@chkount\ch@koc%%
\ch@nraise=1.85ex
\else%
\ifx\ch@chkount\ch@kob%
\ch@nraise=1.6ex%
\else%
\ch@nraise=1.05ex%
\fi%
\fi%
{\uming\chsetmag{340}\raisebox{\ch@nraise}{%
\rotatebox{-90}{{\chvertical #2}}}}%
\ifx\ch@ttmp\ch@ntmp\else%
{\uming%
\chsetmag{340}\hspace*{-.25ex}\raisebox{0.2ex}{#3}}\hspace*{-.25ex}\mbox{}%
\fi%
}


{\ukai
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

{\uming
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

{\uming\LARGE
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

\end{document}


Hung-Yih Chen

yih
2 使國字帶有注音符號(chitex)
Promote 0 Bookmark 02008-12-13quote  
yih

在 
   http://blog.bs2.to/post/EdwardLee/6091

中, Edward 曾提出有關注音符號排版的作法,

在 chitex 有另外的方法, 可以不受中文字型的不同與大小的影響

.....................................

\def\BPM#1#2#3{%
....................................

{\uming\LARGE
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

   在上面之方法對於含二字元之注音的顯示不是很理想, 我做了一些小修改

   看來好些, 如下:

\documentclass[12pt]{article}
\usepackage{graphicx}

\begin{document}

\makeatletter
\newskip\ch@dimtmpb
\newskip\ch@dimtmpc
\newskip\ch@dimtmpd
\newskip\ch@dimtmpe
\newskip\ch@dimtmpf
\newskip\ch@nraise
\newbox\ch@nboxa
\newbox\ch@nboxb

\def\chcheck#1{%
\setbox\ch@nboxa\hbox{ㄑ}%
\setbox\ch@nboxb\hbox{#1}%
\ch@dimtmpb=\wd\ch@nboxa%
\ch@dimtmpc=\wd\ch@nboxa%
\ch@dimtmpd=\wd\ch@nboxa%
\divide\ch@dimtmpb by 2%
\multiply\ch@dimtmpc by 3%
\multiply\ch@dimtmpd by 2%
\ch@dimtmpe=\wd\ch@nboxb \advance\ch@dimtmpe by -\ch@dimtmpc%
\ifdim\ch@dimtmpe < 0pt \multiply \ch@dimtmpe by -1 \fi%
\ch@dimtmpf=\wd\ch@nboxb  \advance\ch@dimtmpf by -\ch@dimtmpd%
\ifdim\ch@dimtmpf < 0pt \multiply \ch@dimtmpf by -1 \fi%
\ifdim\ch@dimtmpe < \ch@dimtmpb%
\def\ch@chkount{3}%
\else%
\ifdim\ch@dimtmpf > \ch@dimtmpb%
\def\ch@chkount{1}%
\else%
\def\ch@chkount{2}%
\fi%
\fi}

\def\ch@koa{1}
\def\ch@kob{2}
\def\ch@koc{3}

\def\chsetmag#1{\ch@fntdimtmpa=\ch@fntdimone%
\multiply\ch@fntdimone by #1\divide\ch@fntdimone by 1000}%
\def\ch@gettwo#1#2#3#4{\def\ch@one{#1#2}\def\ch@two{#3#4}} % 新增

\def\BPM#1#2#3{%
\chcheck{#2}%
\def\ch@ntmp{}\def\ch@ttmp{#3}%
#1%
\ifx\ch@chkount\ch@koc%%
\ch@nraise=1.85ex
\else%
\ifx\ch@chkount\ch@kob%
\ch@nraise=1.6ex%
\ch@gettwo #2\relax%
\else%
\ch@nraise=1.05ex%
\fi%
\fi%
\ifx\ch@chkount\ch@kob%                                         % 新增
{\uming\chsetmag{340}%                                         % 新增
\setbox\ch@nboxa\hbox{ㄑ}%                                   % 新增
\ch@dimtmpb=\wd\ch@nboxa%                                  % 新增
\ch@dimtmpc=\wd\ch@nboxb%                                   % 新增
\multiply\ch@dimtmpb by 2\divide\ch@dimtmpb by 5%   % 新增
\setbox\ch@nboxb\hbox{\rotatebox{-90}{\ch@one}}%  % 新增
\ch@dimtmpc=\wd\ch@nboxb%                                    % 新增
\divide\ch@dimtmpc by 6%                                           % 新增
\raisebox{\ch@nraise}{%                                             % 新增
\rotatebox{-90}{\hspace*{-\ch@dimtmpc}{\chvertical\ch@one}\hspace{\ch@dimtmpb}{\chvertical\ch@two}}}}% % 新增
\else%                                                                         % 新增
{\uming\chsetmag{340}\raisebox{\ch@nraise}{%
\rotatebox{-90}{{\chvertical #2}}}}%
\fi                                                                                 % 新增
\ifx\ch@ttmp\ch@ntmp%
\hspace{.175ex}%
\else%
{\uming%
\chsetmag{340}\hspace*{-.25ex}\raisebox{0.2ex}{#3}}\hspace*{-.25ex}\mbox{}%
\fi\hspace{.1ex}%
}

{\ukai
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

{\uming
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

{\uming\LARGE
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

\end{document}

改良之後的結果: 

[img]#1[/img]

 

yih
3 使國字帶有注音符號(utf-8 及 非 chitex)
Promote 0 Bookmark 02008-12-23quote  
yih

   在上面之方法對於含二字元之注音的顯示不是很理想, 我做了一些小修改

---------------------------------

\makeatletter
\newskip\ch@dimtmpb
\newskip\ch@dimtmpc
--------------------------------

\def\ch@gettwo#1#2#3#4{\def\ch@one{#1#2}\def\ch@two{#3#4}} % 新增

---------------

若為 utf-8 內碼檔   須稍加修改.  若不是在  chitex 上暫時無法用此 macro

因使用到 chitex 中字型大小的 \ch@fntdimone 

文件為 utf-8 內碼檔, 時上一篇 (第 2 篇) 中之 macro \ch@gettwo 須改為:

   \def\ch@gettwo#1#2#3#4#5#6{\def\ch@one{#1#2#3}\def\ch@two{#4#5#6}}

     

edited: 1
yih
4 使國字帶有注音符號(utf-8 及 非 chitex)
Promote 0 Bookmark 02008-12-23quote  
yih

若為 utf-8 內碼檔   須稍加修改. ........      

很抱歉, 在原來的第三篇 (現已修改) 提供的 "不是 chitex 上" 的使國字帶有注音符號的

macros 無法使用, 因其中用到  chitex 中字型大小的 \ch@fntdimone 

原來的第三篇 現已修改, 只有在 chitex 中 utf-8 內碼檔時 macros 的 modify

yih
5 使國字帶有注音符號(utf-8 及 非 chitex)
Promote 0 Bookmark 02008-12-24quote  
yih

很抱歉, 在原來的第三篇 (現已修改) 提供的 "不是 chitex 上" 的使國字帶有注音符號的

macros 無法使用, 因其中用到  chitex 中字型大小的 \ch@fntdimone 

原來的第三篇 現已修改, 只有在 chitex 中 utf-8 內碼檔時 macros 的 modify

我 modify 第二篇的 macros 使國字帶有注音符號的可用於一般的中文的 package (不一定 chitex)

這新的 macros 不會用到 chitex 中特有的指令

下列例子就是包含這 macros(若要在 CJK 中使用須加 一些 CJK 使中文 enable 的指令

下列的字型指令 \mingu 可換為其他字型指令)

\documentclass[12pt]{article}
\usepackage{graphicx}

\begin{document}

\makeatletter % 若為 Utf-8 去掉下列3-4行前之% 且將1-2 行mark

\def\chgettwo#1#2#3#4{\def\ch@one{#1#2}\def\ch@two{#3#4}}
\def\chgetthr#1#2#3#4#5#6{\def\ch@one{#1#2}\def\ch@two{#3#4}\def\ch@thr{#5#6}} 
%\def\chgettwo#1#2#3#4#5#6{\def\ch@one{#1#2#3}\def\ch@two{#4#5#6}}
%\def\chgetthr#1#2#3#4#5#6#7#8#9{\def\ch@one{#1#2#3}\def\ch@two{#4#5#6}\def\ch@thr{#7#8#9}} 
\def\ch@va#1{\hspace*{.2ex}\rotatebox{90}{#1}}
\def\ch@vb#1{\chgettwo#1%
\hspace*{.2ex}\rotatebox{90}{\ch@one}\rotatebox{90}{\ch@two}}
\def\ch@vc#1{\chgetthr#1%
\hspace*{.35ex}\rotatebox{90}{\ch@one}\rotatebox{90}{\ch@two}\rotatebox{90}{\ch@thr}}

\newskip\ch@dimtmpb
\newskip\ch@dimtmpc
\newskip\ch@dimtmpd
\newskip\ch@dimtmpe
\newskip\ch@dimtmpf
\newskip\ch@nraise
\newbox\ch@nboxa
\newbox\ch@nboxb

\def\chcheck#1{%
\setbox\ch@nboxa\hbox{ㄑ}%
\setbox\ch@nboxb\hbox{#1}%
\ch@dimtmpb=\wd\ch@nboxa%
\ch@dimtmpc=\wd\ch@nboxa%
\ch@dimtmpd=\wd\ch@nboxa%
\divide\ch@dimtmpb by 2%
\multiply\ch@dimtmpc by 3%
\multiply\ch@dimtmpd by 2%
\ch@dimtmpe=\wd\ch@nboxb \advance\ch@dimtmpe by -\ch@dimtmpc%
\ifdim\ch@dimtmpe < 0pt \multiply \ch@dimtmpe by -1 \fi%
\ch@dimtmpf=\wd\ch@nboxb  \advance\ch@dimtmpf by -\ch@dimtmpd%
\ifdim\ch@dimtmpf < 0pt \multiply \ch@dimtmpf by -1 \fi%
\ifdim\ch@dimtmpe < \ch@dimtmpb%
\def\ch@chkount{3}%
\else%
\ifdim\ch@dimtmpf > \ch@dimtmpb%
\def\ch@chkount{1}%
\else%
\def\ch@chkount{2}%
\fi%
\fi}

\def\ch@koa{1}
\def\ch@kob{2}
\def\ch@koc{3}

\def\BPM#1#2#3{%
\chcheck{#2}%
\def\ch@ntmp{}\def\ch@ttmp{#3}%
#1%
\ifx\ch@chkount\ch@koc%%
\let\chvert\ch@vc
\ch@nraise=1.85ex
\else%
\ifx\ch@chkount\ch@kob%
\let\chvert\ch@vb
\ch@nraise=1.6ex%
%\ch@gettwo #2\relax%
\chgettwo #2\relax%
\else%
\let\chvert\ch@va%
\ch@nraise=1.05ex%
\fi%
\fi%
\ifx\ch@chkount\ch@kob%                                         
{\mingu\fontsize{0.78967791ex}{0.19354826ex}%                                   
\setbox\ch@nboxa\hbox{ㄑ}%                                  
\ch@dimtmpb=\wd\ch@nboxa%                                 
\ch@dimtmpc=\wd\ch@nboxb%                                  
\multiply\ch@dimtmpb by 2\divide\ch@dimtmpb by 5%  
\setbox\ch@nboxb\hbox{\rotatebox{-90}{\ch@one}}% 
\ch@dimtmpc=\wd\ch@nboxb%                                   
\divide\ch@dimtmpc by 6%                                          
\raisebox{\ch@nraise}{%                                            
\rotatebox{-90}{\hspace*{-\ch@dimtmpc}{\ch@va{\ch@one}}\hspace{\ch@dimtmpb}{\ch@va{\ch@two}}}}}%
\else%                                                                        
{\mingu\fontsize{0.78967791ex}{0.19354826ex}\raisebox{\ch@nraise}{%
\rotatebox{-90}{{\chvert{#2}}}}}%
\fi                                                                                
\ifx\ch@ttmp\ch@ntmp%
\hspace{.175ex}%
\else%
{\mingu%
\fontsize{0.78967791ex}{0.19354826ex}\hspace*{-.25ex}\raisebox{0.2ex}{#3}}\hspace*{-.25ex}\mbox{}%
\fi\hspace{.1ex}%
}

{\kaiu
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

{\mingu
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

{\mingu\LARGE
\BPM{全}{ㄑㄩㄢ}{ˊ}\BPM{注}{ㄓㄨ}{ˋ}\BPM{音}{ㄧㄣ}{}%
\BPM{一}{ㄧ}{}
}

\end{document}

 

edited: 1
企鵝狂
6
Promote 0 Bookmark 02008-12-25quote  

我沒有在文件裡面用過注音

不過想問一下,如果從像是輸入法的table裡面,找出不是破音字的字,是不是就可以半自動幫文件加上注音了?

比較複雜的字甚至可以用到像是詞音的辭典之類的。

 

不知道這個想法可不可行...有空的話蠻想來試試看的...

yih
7
Promote 0 Bookmark 02008-12-26quote  
企鵝狂

我沒有在文件裡面用過注音

不過想問一下,如果從像是輸入法的table裡面,找出不是破音字的字,是不是就可以半自動幫文件加上注音了?

比較複雜的字甚至可以用到像是詞音的辭典之類的。

不知道這個想法可不可行...有空的話蠻想來試試看的...

     寫一個 prepocessor 應該可以

cht電腦資訊文書排版TeXTeX Tips
adm Find login register
views:23742