我有一个包含英语短语及其音标的 tex 文件:
\phrase
{ * * * . }
{Whoa, what hap-pened?}
{ˈwoʊ, ˈwʌt̚ ˈhæp ənd?}
\phrase
{ * . . * . * * }
{May-be a lit-tle too much.}
{ˈmeɪ biʸə ˈlɪd l ˈtu ˈmʌtʃ.}
生成的输出如下所示:
我喜欢这种metrix
类似的做法,因为我不需要用很多\textbf{word}
命令填充我的短语,所以我的短语看起来更干净。
这个 metrix 代码是由 Petr Olsak、RNDr @wipet 提供给我的https://tex.stackexchange.com/a/634483/263939
\def\stressed#1{\leavevmode\vbox{\halign{\hfil##\hfil\cr\cr\scalebox{1.1}{\raisebox{-0.28ex}{$\bullet$}}\cr\bf#1\cr}}}
\def\unstressed#1{\leavevmode\vbox{\halign{\hfil##\hfil\cr\cr$\ssize\bullet$\cr#1\cr}}}
\let\ssize=\scriptscriptstyle
\def\replspace #1 #2{\space #1-%
\ifx#2\end \else \expandafter\replspace\expandafter#2\fi}
\def\metrix #1#2{\leavevmode \def\tmpa{#1}%
\edef\tmpb{\replspace #2 \end}\expandafter\meA\tmpb\end}
\def\meA #1#2-{\meB{#1#2}\isnextchar{ }{ \meA}{\isnextchar\end{\meE}{\meA}}}
\def\meB#1{\expandafter\nextA\tmpa\relax\end
\ifx\next*\stressed{#1}\fi
\ifx\next.\unstressed{#1}\fi
}
\def\nextA #1#2\end{\let\next=#1\def\tmpa{#2}}
\def\meE{\let\next=}
\def\isnextchar#1#2#3{\begingroup\toks0={\endgroup#2}\toks1={\endgroup#3}%
\let\tmp= #1\futurelet\next\isnextcharA
}
\def\isnextcharA{\the\toks\ifx\tmp\next0\else1\fi\space}
\def\phrase#1#2#3{\metrix{#1}{#2}\vskip-0.5ex\relax #3\vskip5ex\relax}
我意识到我不需要生成的 PDF 中的重音点(大点和小点),但它们可以保留在 tex 文件中,就像现在一样。但是,我希望根据我在 tex 文件中放置星号的位置,在生成的 PDF 中单词保持粗体。
有人能修改 Petr Olsak 的代码吗,或者也许他会看到这篇文章。我会非常感激。
答案1
重新定义\stressed
和\unstressed
如图所示。
OP 没有建议支持这些符号的字体,但我找到了Linux Libertine O
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
%\def\stressed#1{\leavevmode\vbox{\halign{\hfil##\hfil\cr\cr\scalebox{1.1}{\raisebox{-0.28ex}{$\bullet$}}\cr\bf#1\cr}}}
%\def\unstressed#1{\leavevmode\vbox{\halign{\hfil##\hfil\cr\cr$\ssize\bullet$\cr#1\cr}}}
\def\stressed#1{\textbf{#1}}
\def\unstressed#1{#1}
\let\ssize=\scriptscriptstyle
\def\replspace #1 #2{\space #1-%
\ifx#2\end \else \expandafter\replspace\expandafter#2\fi}
\def\metrix #1#2{\leavevmode \def\tmpa{#1}%
\edef\tmpb{\replspace #2 \end}\expandafter\meA\tmpb\end}
\def\meA #1#2-{\meB{#1#2}\isnextchar{ }{ \meA}{\isnextchar\end{\meE}{\meA}}}
\def\meB#1{\expandafter\nextA\tmpa\relax\end
\ifx\next*\stressed{#1}\fi
\ifx\next.\unstressed{#1}\fi
}
\def\nextA #1#2\end{\let\next=#1\def\tmpa{#2}}
\def\meE{\let\next=}
\def\isnextchar#1#2#3{\begingroup\toks0={\endgroup#2}\toks1={\endgroup#3}%
\let\tmp= #1\futurelet\next\isnextcharA
}
\def\isnextcharA{\the\toks\ifx\tmp\next0\else1\fi\space}
\def\phrase#1#2#3{\metrix{#1}{#2}\vskip-0.5ex\relax #3\vskip5ex\relax}\begin{document}
\phrase
{ * * * . }
{Whoa, what hap-pened?}
{ˈwoʊ, ˈwʌt̚ ˈhæp ənd?}
\phrase
{ * . . * . * * }
{May-be a lit-tle too much.}
{ˈmeɪ biʸə ˈlɪd l ˈtu ˈmʌtʃ.}
\end{document}