在 gb4e 中设置多种字体功能

在 gb4e 中设置多种字体功能

我试图让 gb4e 注释中的第一行采用粗体罗马字体,但我只能设置罗马字体或粗体,不能同时设置两者。我该如何同时设置两者?

该文档是一份 Beamer 演示文稿,默认字体为无衬线字体。我尝试了这些,但它们不起作用:

\let\eachwordone=\textbf{\rmfamily}

\let\eachwordone=\rmfamily\bf

我得到的只是第一个代码的 \bf 和第二个代码的 roman。

答案1

双字母字体命令已弃用,并已被替换。您的第二次尝试是正确的,但您需要使用\bfseries而不是\bf。但 TeX 的语法\let只允许在 ; 后使用单个标记=,要执行您想要的操作,您应该改用 LaTeX \renewcommand

此外,如果您还想更改翻译行的字体,则需要使用其他方法,因为gb4e没有提供内置钩子。在下面的示例中,我使用了包\pretocmd中的etoolbox来修改\glt宏(其同义词是\trans)。

\documentclass{beamer}
\usepackage{gb4e}
\usepackage{etoolbox}
\renewcommand{\eachwordone}{\rmfamily\bfseries}
\pretocmd{\glt}{\rmfamily}{}{}
\begin{document}
\begin{frame}
\begin{exe}
\ex{
\gll This is the first line\\
     This is the second line\\
\glt This is the translation
}
\label{ex}
\end{exe}
\end{frame}
\end{document}

代码输出

不过,就我个人而言,我不会在beamer演示文稿中混合使用衬线字体和无衬线字体,因此更简单的方法就是使用\usefonttheme{serif}然后定义\eachwordone\bfseries

\documentclass{beamer}
\usefonttheme{serif}
\usepackage{gb4e}
\renewcommand{\eachwordone}{\bfseries}
\begin{document}
\begin{frame}
\begin{exe}
\ex{
\gll This is the first line\\
     This is the second line\\
\glt This is the translation
}
\label{ex}
\end{exe}
\end{frame}
\end{document}

如果您希望所有文本都采用无衬线字体以匹配默认beamer字体,则需要更改确定光泽线字体的每个宏。这些是\eachwordone\eachwordtwo\eachwordthree。因此,要使所有光泽线都采用无衬线字体,您需要添加

\renewcommand{\eachwordone}{\sffamily}
\renewcommand{\eachwordtwo}{\sffamily}
\renewcommand{\eachwordthree}{\sffamily}

相关内容