在语雀中输入汉语拼音

百般思念 提交于 2020-01-20 03:02:19

在语雀中,无法使用HTML中的<ruby>标签来输入拼音,但是语雀可以支持latex公式块的插入,所以我们可以借助公式中的latex来做汉语拼音的输入,具体来说也就是通过latex中的overset指令来输入上下并排的字符。

先举一个简单的例子

\overset{bái}{白}\overset{rì}{日}\overset{yī}{依}\overset{shān}{山}\overset{jìn}{尽},\overset{huáng}{黄}\overset{hé}{河}\overset{rù}{入}\overset{hǎi}{海}\overset{liú}{流}

然后可以让这个字稍微大一些,比如(通过\small,\large,\huge等命令来控制字体)

\huge{\overset{bái}{白}\overset{rì}{日}\overset{yī}{依}\overset{shān}{山}\overset{jìn}{尽},\overset{huáng}{黄}\overset{hé}{河}\overset{rù}{入}\overset{hǎi}{海}\overset{liú}{流}}

也可以通过\text来设置不使用斜体来渲染拼音:

\huge{\overset{\text{bái}}{白}\overset{\text{rì}}{日}\overset{\text{yī}}{依}\overset{\text{shān}}{山}\overset{\text{jìn}}{尽},\overset{\text{huáng}}{
黄}\overset{\text{hé}}{河}\overset{\text{rù}}{入}\overset{\text{hǎi}}{海}\overset{\text{liú}}{流}}

如果直接编辑latex公式的话,确实是一个非常痛苦的过程。我们使用pypinyin这个工具,把成句或者成段的文字在加上拼音之后翻译成latex公式的形式(注意,受限于pypinyin的词库,自动匹配的拼音并不一定是正确的,还需要自己进行手动调整):

import pypinyin

def get_latex_pinyin(s, text=False):
    chars = []
    for group in pypinyin.core.seg(s):
        p = pypinyin.lazy_pinyin(group, style=pypinyin.Style.TONE)
        if p[0] == group:
            chars.extend(list(zip(group, group)))
        else:
            chars.extend(list(zip(list(group), p)))
    def to_latex(char, pinyin):
        if char == pinyin:
            return char
        elif text:
            return '\overset{\\text{%s}}{%s}' % (pinyin, char)
        else:
            return '\overset{%s}{%s}' % (pinyin, char)
    return ''.join([to_latex(char, pinyin) for (char, pinyin) in chars])

使用get_latex_pinyin这个函数的方式如下:

>>> print(get_latex_pinyin('白日依山尽,黄河入海流', text=True))
\overset{\text{bái}}{}\overset{\text{}}{}\overset{\text{}}{}\overset{\text{shān}}{}\overset{\text{jǐn}}{},\overset{\text{huáng}}{}\overset{\text{}}{}\overset{\text{}}{}\overset{\text{hǎi}}{}\overset{\text{liú}}{}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!