表格中不同列使用不同字体

表格中不同列使用不同字体

我正在使用 XelaTeX 排版一张外语词汇表,其结构类似于这个:不同的列使用不同的字体(和脚本)排版。似乎应该使用包\newcolumntype来实现array

下面是我尝试用 Linux Libertine 和 Arial 排版一列的 MWE:

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt, a4paper]{standalone}

\usepackage{fontspec}
\setmainfont{Linux Libertine O}

\usepackage{array}

\newcolumntype{L}{>{\fontspec{Linux Libertine O}}l}
\newcolumntype{A}{>{\fontspec{Arial}}l}

\begin{document}

\begin{tabular}{LA}
Libertine & Arial\\
\end{tabular}

\end{document}  

L它定义了类型(以 Libertine 排版)和A(Arial)的列。

我在编译时收到以下错误消息: ! Forbidden control sequence found while scanning use of \bool_if:nTF. <inserted text> \par l.16 Libertine & Arial\\

似乎的语法\newcolumntype最近发生了变化,因此基于手册我试图将该列定义为

\newcolumntype{L}{>{\fontspec{Linux Libertine O}}{l}<{}}

这会导致同样的错误。

有任何想法吗?

答案1

如果您尝试>{\fontspec...}直接在表格中使用,也会得到同样的错误。在此处设置字体不是一个好主意(除了错误之外,fontspec 还必须在每个单元格中再次执行此操作)。首先设置字体,然后改用常规字体命令:

\documentclass[12pt, a4paper]{article}

\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setsansfont{Arial}
\newfontfamily\testfamily{Cambria}
\usepackage{array}

\newcolumntype{L}{>{\rmfamily}l}
\newcolumntype{A}{>{\sffamily}l}
\newcolumntype T{>{\testfamily}l}

\begin{document}

\begin{tabular}{LAT}
Libertine & Arial& Cambria\\
\end{tabular}

\end{document}  

相关内容