我试图让 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}