通过最小工作示例演示该问题
我在文件中保存了以下 LaTeX 代码~/Test.tex
。
\documentclass{article}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{cc}
left & right
\end{tblr}
\end{document}
代码使用该babel
包将文档的主要语言设置为希伯来语(一种从右到左书写的语言),将文档的次要语言设置为英语。然后,它使用该tabularray
包创建一个简单的表格。该表有两列和一行。行中的第一个条目是left
,第二个条目是right
。
然后我在终端中执行了以下命令。
> cd ~
> lualatex Test
这导致文件~/Test.pdf
被创建。在 PDF 查看器中打开时,此文件显示如下。(我仅截取了显示的相关部分。)
可以看出,“左”和“右”这两个词的相对顺序与它们的含义相反。这不是错误。这是由于该文档的主要语言是希伯来语。
如果希望保留文档的主要语言为希伯来语,但更改表格的方向性,则实现此目的的一种方法是在表格定义之前将语言更改为英语,并在表格定义之后将其更改回希伯来语,因此:
\selectlanguage{english}
\begin{tblr}{cc}
left & right
\end{tblr}
\selectlanguage{hebrew}
这产生了
问题
- 有没有办法通过传递参数而
tblr
不是将其包装在\selectlanguage
命令中来改变表的语言和方向性? tabularray
有没有办法使用\SetTblrInner
或命令来改变文档中所有表格的语言和方向性\SetTblrOuter
?
评论
我感兴趣的是更改两个独立属性:表格的方向性和表格的语言。为了通过示例来澄清区别,以下希伯来语文档的 PDF 文件包含一个tabularrray
单列和单行(因此没有方向性),并且-2
其单个单元格中的条目显示为2-
(即减号排版在数字右侧2
),因为表格的语言是从文档继承而来的希伯来语。
\documentclass{article}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{c}
-2
\end{tblr}
\end{document}
答案1
笔记
看起来语言可以嵌套,就像级联一样:表、行、单元格等。
因此,从某种babel
层面上讲,方向性可以与语言分离。
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\newcommand\testh{\textcolor{red}אבג רשת}
\newcommand\testt{The cat sat on the mat. \testh}
\begin{document}
\testh
---
\bigskip
\selectlanguage{english}
English
\begin{longtblr}[
caption = {Test},
]{
cells={c},
row{1}={bg=blue!20,cmd={\selectlanguage{english}}},
row{2}={bg=blue!10,cmd={\selectlanguage{hebrew}}},
row{3}={bg=blue!5,cmd={\selectlanguage{hebrew}}},
cell{2-3}{1}={cmd={\selectlanguage{english}}},
}
(E) & 1. left & \testt & 2. right \\
(H$_{1}$) & 1. left & \testt & 2. right \\
(H$_{2}$) & 1. \testh & \testt & 2. xxx \\
\end{longtblr}
\bigskip
\selectlanguage{hebrew}
Hebrew
\begin{longtblr}[
caption = {Test},
remark{\selectlanguage{english}* Note} = {\selectlanguage{english}Cell language is English.},
]{
cells={c},
row{1}={bg=blue!20,cmd={\selectlanguage{english}}},
row{2}={bg=blue!10,cmd={\selectlanguage{hebrew}}},
row{3}={bg=blue!5,cmd={\selectlanguage{hebrew}}},
cell{3}{3}={bg=red!20,
cmd={\selectlanguage{english}}},
cell{2-4}{1}={cmd={\selectlanguage{english}}},
}
(E) & 1. left & \testt & 2. right \\
(H$_{1a}$) & 1. left & \testt & 2. right \\
(H$_{1b}$) & 1. left & *\testt & 2. right \\
(H$_{2}$) & 1. \testh & \testt & 2. xxx \\
\end{longtblr}
\end{document}
答案2
问题 2 的部分答案。使用环境钩子。
\documentclass{article}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{tabularray}
\AddToHook{env/tblr/before}{\selectlanguage{english}}
\AddToHook{env/tblr/after}{\selectlanguage{hebrew}}
\begin{document}
\begin{tblr}{cc}
left & right
\end{tblr}
\end{document}