![eso-pic 与 bidi 相结合](https://linux22.com/image/391347/eso-pic%20%E4%B8%8E%20bidi%20%E7%9B%B8%E7%BB%93%E5%90%88.png)
我构建了一个文档类,它使用该eso-pic
包将内容放置在相对于左上角的每个页面上。现在我在一个(部分)希伯来语的文档中使用了这个文档类。对于希伯来语polyglossia
,我根据这个帖子与 XeLaTeX 一起使用。polyglossia
使用bidi
将页面布局切换为从右到左。
除了左上角的定位外,其他一切都正常。以下示例显示了我的问题:
\documentclass{article}
% set font for hebrew
\usepackage{fontspec}
\setmainfont{DejaVuSans.ttf}
% if polyglossia is commented
\providecommand{\setLTR}{}
\providecommand{\setRTL}{}
% write "test" a few times
\newcounter{loopcounter}
\newcommand{\writetest}{
\loop
\ifnum\value{loopcounter}<36
Test\theloopcounter
\stepcounter{loopcounter}
\repeat
}
% add the test in the top left corner
\usepackage{calc}
\usepackage{picture}
\usepackage{eso-pic}
\AddToShipoutPictureFG{
\AtPageUpperLeft{%
% see the bottom of the question for the \put()
\put(0,0){
\raisebox{-\height-3pt}{
% needed to do left to right align and for breaking
\parbox{\paperwidth}{
\setLTR
\writetest
}
}
}
}
}
\usepackage{polyglossia} % <- If those packages are commented the placing
\setmainlanguage{hebrew} % <- of the top left content is correct.
\begin{document}
תוכן
\end{document}
如果我编译给定的示例,我将得到下图底部所示的结果。但是放置在左上角的内容并不在左上角。
第二张上图是完全相同的示例,但 和\usepackage{polyglossia}
被\setmainlanguage{hebrew}
注释掉了。因此bidi
包未加载。角落的文字是正确的。但现在希伯来语文本(当然)不是从右到左的。
正如您在我提供的代码中看到的,我已经尝试使用\put()
(与picture
包一起)来修复偏移量。但我找不到它是什么。它应该是这样的-\textwidth-\marginright
。但事实并非如此。
请注意,\AddToShipoutPictureFG
在 documentclass 中。它与内容不在同一个文件中。我想在各种文件中使用 documentclass,因此尺寸会发生变化。我必须知道相对于页面尺寸的偏移量。不是绝对值。使用put(-11.872cm, 0)
不能解决我的问题。
我该如何polyglossia
与eso-pic
将内容放置在左上角一起使用?
答案1
background
虽然这不是您所希望的,但这里有一个使用包和易于实现的解决方案tikz
:
\documentclass[letterpaper]{article}
% set font for hebrew
\usepackage{fontspec}
\setmainfont{DejaVuSans.ttf}
% write "test" a few times
\newcounter{loopcounter}
\newcommand{\writetest}{
\loop
\ifnum\value{loopcounter}<36
Test\theloopcounter
\stepcounter{loopcounter}
\repeat
}
% add the test in the top left corner
\usepackage[all]{background}
\backgroundsetup{%
placement = top,
color = black,
opacity=1,
scale = 1,
vshift=-6pt,
contents = {%
\tikz \node [text width=\paperwidth-12pt, align=justify] {\writetest};
},
}
\usepackage{polyglossia}
\setmainlanguage{hebrew}
\begin{document}
תוכן
\end{document}