我正在尝试使用亚麻布包。但是,我需要包含一些用从右到左语言编写的示例(在我的例子中是乌尔都语,但任何从右到左的语言似乎都会导致同样的问题)。
一旦我将 RTL 语言\setotherlanguages
纳入多语包中,行号中断:第二列中的数字没有像应有的那样位于该列的右侧,而是位于页面的中间,与文本重叠。
这是一个最小的工作示例:
\documentclass[11pt,twocolumn]{article}
\usepackage[a4paper,margin=2.5cm,heightrounded=true]{geometry}
\usepackage[switch,mathlines]{lineno}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{lipsum}
\setdefaultlanguage{english}
\setotherlanguages{urdu} % this is what breaks the line numbers
\linenumbers
\begin{document}
\lipsum
\end{document}
请注意,它实际上不包含任何乌尔都语文本,只有多语环境。
这是所需的输出(交换urdu
或french
任何 LTR 语言即可获得):
任何想法如何解决这一问题?
答案1
该bidi
包尝试通过在钩子中添加以下代码来确保数字排版在正确的边距begindocument
:
\if@RTLmain
\rightlinenumbers*
\else
\leftlinenumbers*
\fi
\@ifpackagewith{lineno}{left}{%
\leftlinenumbers*
}{}
\@ifpackagewith{lineno}{right}{%
\rightlinenumbers*
}{}
因此,其中一个宏\rightlinenumbers*
, 或\leftlinenumbers*
被使用并覆盖了该switch
选项。您可以通过在文档开头切换回所需的模式来解决这个问题:
\documentclass[11pt,twocolumn]{article}
\usepackage[a4paper,margin=2.5cm,heightrounded=true]{geometry}
\usepackage[switch,mathlines]{lineno}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{lipsum}
\setdefaultlanguage{english}
\setotherlanguages{urdu} % this is what breaks the line numbers
\linenumbers
\AtBeginDocument{\switchlinenumbers} %% <------ new
\begin{document}
\lipsum
\end{document}