xpinyin宏包与自定义的hanpin和hanzibox命令冲突了

2019-08-25 09:35发布

hanpin和hanzibox来自latexstudio排版工作室分享的中文解词宏包报错提示是Command '\pinyin' already defined!作者使用的是Windo...

hanpin和hanzibox来自latexstudio排版工作室分享的中文解词宏包


报错提示是


Command '\pinyin' already defined!



作者使用的是Windows 10 操作系统和 TeXLive 2019 版本,编译器是TeXworks


————————————————————————分割线—————————————————————————————


代码如下:


chinese-examination-templates.zip

3条回答
registor
2019-08-25 11:40

建议hanpin和xpinyin宏包只用一个,由于hanzibox包中用了hanpin,所以建议只使用hanpin。这个包好像不能够给拼音加下划线,你可以将代码改成:

\question[4]

% 用pifont宏包,使用\Pisymbol{pzd}{51}输出对号,\Pisymbol{pzd}{55}输出错号

给加点字选择正确的读音,画``\Pisymbol{pzd}{51}''%“√”。

\begin{parts}

\part

  \CJKunderdot{缝}\pinyin{feng2}\ \pinyin{feng4}补

\part

  \CJKunderdot{模}\pinyin{mo3}\ \pinyin{mu2}补

\end{parts}

也就是取消原\CJKunderline命令的使用。另外,你的引号用法不对,对号用的也不好。

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

---------------------------------华丽的分割线--------------------------------

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

另外一种方案是将hanpin.sty文件第38行中定义的\pinyin宏名称重命名为别的名称,如\zhpinyin,然后将hanzibox.sty文件中的第102和108行中对\pinyin宏的引用改为对\zhpinyin宏的引用。

然后,就可以载入xpinyin宏包,使用其中定义的各种命令了。我发现xpinyin宏包的\pinyin宏可以使用\CJKunderline下划线命令。

另外,在我的ubuntu+texlive2019中,对于ǚ音,hanpin宏包音调和两个点会重合,而xpinyin宏包是正常的。目前,我没有从源码中找到修改的地方。

如果直接修改hanzibox.sty第15行\RequirePackage{hanpin}为\RequirePackage{xpinyin},\pinyin命令不变,则发现通过\hanzibox{pinyin=wo3}{inner=cross}将wo3传入\pinyin时无法正常实现注音,测试发现xpinyin宏包的\pinyin命令无法接收宏命令,只能直接接收类似wo3这样的拼音。这一BUG的MWE如下,期待大佬研究解决!

\documentclass{ctexart}

% 引入拼音宏包

\usepackage{xpinyin}

% 定义拼音宏

\def\zhpinyin{zhong1guo2}

\begin{document}

  \pinyin{zhong1guo2} % 正确

  \pinyin{\zhpinyin} % 无法使用定义的宏

  \xpinyin*{中国} % 正确

\end{document}

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

---------------------------------华丽的分割线--------------------------------

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

经过在https://github.com/CTeX-org/ctex-kit/issues/447的提问,得到解决xpinyin的问题的方法,因此,可以将hanzibox.sty中第15行对hanpin宏包的引用改为对xpinyin宏包的引用。然后,将第102行和第108行中\pinyin{\mm@pin}改为\expandafter\pinyin\expandafter{\mm@pin}。


这样hanzibox.sty宏包将不依赖于hanpin.sty宏包,在使用中,能够保证各类拼音的排版结果的一致性,并且可以指定需要的拼音字体。


修改后的hanzibox.sty见附件。

hanzibox.zip


一周热门 更多>