TikZ의 헤더 페이지 책

TikZ의 헤더 페이지 책

이 그림은 어떻게 그릴 수 있나요?

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

\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제어된 경계 상자와 함께 사용하는 것입니다.

다음은 시작입니다. 위쪽 부분만 했는데 아래쪽 부분이 더 쉬울 것 같습니다. Parsi 항목을 제거했습니다(글꼴이 없습니다).

\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 boxa에서 사용할 수 있음 ) 사진의 크기가 페이지 번호가 있는 다이아몬드 크기와 같다고 확신하는 것입니다.scopefancyhdr

당연히 헤더의 크기도 늘려야 했습니다. 이러한 상수를 모두 사용하지 않도록 코드를 정리해야 하지만 독자의 연습 문제로 남겨두겠습니다.

새로운 모양으로 업데이트 --- 이것은 앵커의 사용을 보여주므로 매우 교육적이라고 생각합니다... 변경:

\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}%
}

당신에게 줄 것입니다 :

여기에 이미지 설명을 입력하세요

관련 정보