
我怎麼才能畫出這個圖形?
\documentclass[12pt]{book}
\usepackage[top=25mm,bottom=25mm,left=25mm,right=25mm]{geometry}
\usepackage[all]{background}
\usepackage{ptext,xcolor}
%\usepackage{showframe}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{changepage}
\strictpagecheck
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[LO,RE]{\thepage}
\fancyhead[LE]{عنوان کتاب}
\fancyhead[RO]{\leftmark}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
\usepackage{xepersian}
\settextfont[Scale=1.2]{Yas}
\linespread{1.5}
\newcommand*{\vsp}{2cm}
\newcommand*{\hsp}{2.5cm}
\newcommand{\MyTikzLogo}{%
\begin{tikzpicture}[remember picture,overlay]
\checkoddpage
\ifoddpage
\draw [color=magenta,line width=1mm] ($(\paperwidth+\hsp,-\vsp)$) --($(\hsp,-\vsp)$);
\else
\draw [color=cyan,line width=1mm] ($(0,-\vsp)$) --($(\paperwidth-\hsp,-\vsp)$);
\fi
\end{tikzpicture}
}
\SetBgContents{\MyTikzLogo}
\SetBgPosition{current page.north west}
\SetBgOpacity{1.0}
\SetBgAngle{0.0}
\SetBgScale{1.0}
\begin{document}
\chapter{titel}
\section{sec }
\ptext[1-40]
\end{document}
答案1
在這種情況下我不會使用背景。我的建議是將裝飾貼在列印頁碼的命令中,並使用tikzpicture
帶有受控邊界框的 a 。
下面是一個開始---我只做了上面的部分,下面的應該比較容易。我刪除了帕西語的東西(我沒有字體)。
\documentclass[12pt]{book}
\usepackage[top=25mm,bottom=25mm,left=25mm,right=25mm,
headheight=40pt]{geometry}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{calc, shapes.geometric}
\usepackage{changepage}
\strictpagecheck
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[LO,RE]{\myfancynum}
\fancyhead[LE]{book title}
\fancyhead[RO]{\leftmark}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
\linespread{1.5}
\newcommand{\myfancynum}{%
\begin{tikzpicture}
\path (0,0) [use as bounding box]
node[diamond, draw=cyan, inner sep=0pt, minimum size=32pt] (pageno) {\thepage} ;
\checkoddpage\ifoddpage
% 36pt = 32pt + 4pt +4pt;
\path (pageno.west) node[fill=cyan, fill opacity=0.4, diamond, inner sep=0pt, minimum size=16pt] {};
\draw[cyan] (pageno.north) ++(0, +4pt) -- ++(40pt, -40pt) -- ++(\linewidth,0);
\draw[cyan] (pageno.east) ++(4pt, 0) -- ++(-40pt, -40pt) -- ++(0, -4cm);
\else
\path (pageno.east) node[fill=cyan, fill opacity=0.4, diamond, inner sep=0pt, minimum size=16pt] {};
\draw[cyan] (pageno.north) ++(0, +4pt) -- ++(-40pt, -40pt) -- ++(-\linewidth,0);
\draw[cyan] (pageno.west) ++(-4pt, 0) -- ++(40pt, -40pt) -- ++(0, -4cm);
\fi
\end{tikzpicture}%
}
\begin{document}
\chapter{A chapter}
\section{A section}
\lipsum[1-40]
\end{document}
獲得:
這裡的技巧是use as bounding box
東西(scope
如果你需要更多東西,你可以在 a 中使用它),以便fancyhdr
確信圖片的大小就是帶有頁碼的菱形的大小。
顯然,我也必須增加標題的大小。應該清理程式碼,不要使用所有這些常數,但是,嘿,這是留給讀者的練習...
用新的形狀更新——這顯示了錨點的使用,所以它很有教育意義,我認為......改變:
\newcommand{\myfancynum}{%
\begin{tikzpicture}
% this trick is used to have the bounding box centered on the number, but
% the real drawing (the star) hanging down (thanks to anchor=north).
% By default, fancyhdr will line the baseline of this graph (that for it is
% just the pagenumber) to the chapter-section-title whatever info it prints in
% the header.
% To see how fancyhdr lines up things, change this \path to a \draw
\path [use as bounding box] (-16pt,16pt) rectangle (16pt,-16pt);
\path node[star, star points=8, star point ratio=1.3, draw=cyan,
inner sep=0pt, minimum size=32pt, anchor=north] (pageno) {\thepage} ;
\checkoddpage\ifoddpage
% line lengths are adjusted by hand. Probably a bit of math could fix this, but well...
\path (pageno.west) node[fill=cyan, fill opacity=0.4, diamond, inner sep=0pt, minimum size=16pt] {};
\draw[cyan] (pageno.inner point 7) -- ++(44pt,0);
\draw[cyan] (pageno.east) -- ++(+40pt, 0) -- ++(4pt,-4pt) -- ++({\linewidth-48pt},0);
\draw[cyan] (pageno.outer point 6) -- ++(\linewidth,0);
\draw[cyan] (pageno.west) -- ++(-8pt, -8pt) -- ++(0, -4cm);
\else
\path (pageno.east) node[fill=cyan, fill opacity=0.4, diamond, inner sep=0pt, minimum size=16pt] {};
\draw[cyan] (pageno.inner point 2) -- ++(-44pt,0);
\draw[cyan] (pageno.west) -- ++(-40pt, 0) -- ++(-4pt,-4pt) -- ++({-\linewidth+48pt},0);
\draw[cyan] (pageno.outer point 4) -- ++(-\linewidth,0);
\draw[cyan] (pageno.east) -- ++(+8pt, -8pt) -- ++(0, -4cm);
\fi
\end{tikzpicture}%
}
會給你: