![适用于从右到左语言的 Todonotes](https://linux22.com/image/329087/%E9%80%82%E7%94%A8%E4%BA%8E%E4%BB%8E%E5%8F%B3%E5%88%B0%E5%B7%A6%E8%AF%AD%E8%A8%80%E7%9A%84%20Todonotes.png)
我想为用阿拉伯语写的数学讲座笔记添加一些边注说明,我正在使用 todonotes 包。问题是注释文本没有调整好。我想过更改每个注释的文本宽度,但这个选项\todo[textwidth=4cm]
不起作用。此外,todo 注释中的阿拉伯语文本被调整到左侧而不是右侧。有什么帮助吗?
\documentclass[12pt,a4paper]{book}
%\usepackage[force]{filehook}
% Page format
\usepackage[left=5cm,right=5cm,top=3cm,bottom=2.5cm,
headsep=1.5cm,headheight=1cm]{geometry}
\usepackage{amsfonts}
\usepackage[x11names]{xcolor}
\usepackage[framemethod=tikz]{mdframed}
\usetikzlibrary{calc}
\usepackage{todonotes}
\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian,hijricorrection=1,locale=morocco]{arabic}
\defaultfontfeatures{Ligatures=TeX,%
Mapping=tex-text,%
AutoFakeSlant=0.2%Simulate Italic%
}
\newfontfamily\arabicfont[Script = Arabic,Scale=1.5]{Scheherazade}
\begin{document}
\section{مجموعات الأعداد}
قسمة عددين صحيحين هو عدد نسبي، أي أنه عنصر من مجموعة
{\bfseries الأعداد النسبية}:
\todo{\RL{ مجموعة العناصر
$\frac{m}{n}$
حيث $m$ عدد صحيح و $n$ عدد طبيعي.
}}
$$
\mathbb{Q} = \left\{\frac{m}{n} : m\in \mathbb{Z} , n\in\mathbb{N}\right\}.
$$
\end{document}
答案1
您可以像这样 添加align=right
样式notestyle
\tikzset{notestyle/.append style={
align=right}}
但这还不够,因为命令的环境remember picture
选项,你应该用tikzpikture
\@todonotes@drawMarginNote
renewcommand
代码
\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian,hijricorrection=1,locale=morocco]{arabic}
\defaultfontfeatures{Ligatures=TeX,%
Mapping=tex-text,%
AutoFakeSlant=0.2%Simulate Italic%
}
\newfontfamily\arabicfont[Script = Arabic,Scale=1.5]{Amiri}
\makeatletter
\tikzset{notestyle/.append style={
align=right}}
\renewcommand{\@todonotes@drawMarginNote}{%
\if@todonotes@dviStyle%
\begin{tikzpicture}[remember picture]%
\draw node[notestyle] {};%
\end{tikzpicture}\\%
\begin{minipage}{\@todonotes@textwidth}%
\if@todonotes@authorgiven%
\@todonotes@sizecommand \@todonotes@author \@todonotes@text%
\else%
\@todonotes@sizecommand \@todonotes@text%
\fi%
\end{minipage}\\%
\begin{tikzpicture}[remember picture]%
\draw node[notestyle] (inNote) {};%
\end{tikzpicture}%
\else%
\let\originalHbadness\hbadness%
\hbadness 100000%
\begin{tikzpicture}[remember picture,baseline=(X.base)]%
\node(X){\vphantom{X}};%
\draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)%
{\@todonotes@text};%
\if@todonotes@authorgiven%
\draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)%
{\@todonotes@sizecommand\@todonotes@author};%
\node(Y)[below=of X]{};%
\draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.south)%
{\@todonotes@text};%
\else%
\draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)%
{\@todonotes@text};%
\fi%
\end{tikzpicture}%
\hbadness \originalHbadness%
\fi}
\makeatother
\begin{document}
\section{مجموعات الأعداد}
قسمة عددين صحيحين هو عدد نسبي، أي أنه عنصر من مجموعة
{\bfseries الأعداد النسبية}:
\todo{\RL{مجموعة العناصر
$\frac{m}{n}$
حيث $m$ عدد صحيح و $n$ عدد طبيعي.
}}
$$
\mathbb{Q} = \left\{\frac{m}{n} : m\in \mathbb{Z} , n\in\mathbb{N}\right\}.
$$
\end{document}
输出
答案2
不幸的是,[textwidth=4cm]
这似乎只是一个包选项,因此您只能在加载包时设置它\usepackage[textwidth=4cm]{todonotes}
。但您可以调整 tikz 样式的todonotes
使用(notestyleraw)来调整宽度,并将其与您想要具有不同宽度的注释一起放入一个组中。
\documentclass{article}
\usepackage{todonotes}
\usepackage{blindtext}
\begin{document}
\blindtext
\todo{A regular note}
\blindtext
{% text width group start
\tikzstyle{notestyleraw} += [text width=4cm]%
\todo{A note with a custom width.}
}% text width group end
\blindtext
\todo{A regular note}
\end{document}
输出: