تغییراتی که من دادم فایل ورودی شما را به این شکل تغییر میدهد:
\documentclass[svgnames]{report}
\usepackage{xecolor}
\pagestyle{empty}
\usepackage{tikz}
\usepackage[explicit]{titlesec}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\renewcommand{\baselinestretch}{1.5}
\newcommand*\chapterlabel{}
\titleformat{\chapter}
{\gdef\chapterlabel{}
\normalfont\Huge\bfseries}
{\gdef\chapterlabel{\thechapter\ }}{0pt}
{\begin{tikzpicture}[remember picture,overlay]
\node[yshift=-3cm] at (current page.north west)
{\begin{tikzpicture}[remember picture, overlay]
\draw[fill=LightSkyBlue] (0,0) rectangle
(\paperwidth,3cm);
\setRTL
\node[anchor=east,xshift=0.95\paperwidth,rectangle,
rounded corners=20pt,inner sep=11pt,
fill=MidnightBlue,text width=\dimexpr0.9\paperwidth-22pt\relax,align=justify]
{\addfontfeature{Color=F5F5F5}\chapterlabel#1};
\end{tikzpicture}
};
\end{tikzpicture}
}
\titlespacing*{\chapter}{0pt}{50pt}{-60pt}
\begin{document}
\chapter{
سریهای حسابی و هندسی سریهای حسابی و هندسی سریهای حسابی و هندسی}
\end{document}
که خروجی زیر را میدهد:
- در مورد آخرین
\node
، مقدار \xshift
را از 0.1\paperwidth
به 0.95\paperwidth
تغییر دادهام.
به آخرین \node
دو گزینه زیر را اضافه کردهام:
text width=\dimexpr0.9\paperwidth-22pt\relax,align=justify
گزینه اولی باعث میشود تا متن بلند در دو خط چیده شود و از هر دو سمت راست و چپ فاصلهای یکسان داشته باشد. گزینه دوم باعث میشود تا متن بصورت justify
حروفچینی شود (پیشفرض tikz
گزینه align=left
است).
- دستور
\setRTL
را از آرگومان آخرین \node
حذف کردهام و آن را به قبل از آخرین \node
انتقال دادهام تا پاراگراف بصورت راست به چپ حروفچینی شود و همچنین دستور \color{white}
را به \addfontfeature{Color=F5F5F5}
تغییر دادهام تا رنگ جزیی از خواص قلم باشد و از \special
استفاده نکند (علت این بوده که در رنگکردن متنهای بیش از یک خط مشکلی وجود نداشته باشد).
آیا این راهحل کامل است؟
خیر. در صورتی که عنوان فصل کوچک باشد، پهنای \node
تغییری نخواهد کرد بنابراین بهتر است با یک ماکرنویسی خیلی ساده پهنای \node
را با توجه به پهنای عنوان فصل تغییر دهید.