如何使用这种类似metrix的方法使短语中的某些单词变为粗体?

如何使用这种类似metrix的方法使短语中的某些单词变为粗体?

我有一个包含英语短语及其音标的 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}

在此处输入图片描述

相关内容