나는 모든 페이지 바닥글에 어깨를 나란히 하는 일련의 원을 만들고 싶습니다. 원의 수는 전체 페이지 수입니다. 즉, 각 원은 페이지를 나타냅니다. 각 원의 중앙에는 현재 페이지 번호가 있습니다.
모든 원의 직경이 동일하면 \foreach
이를 쉽게 달성할 수 있습니다 . pgf
하지만 현재 페이지를 나타내는 원의 지름이 더 크길 원합니다.
조판은 다음 MWE에서 제작한 첨부 그림과 같습니다. 누구든지 이 문제를 도와줄 수 있나요?
MWE:
\documentclass{article}
\usepackage{fancyhdr,geometry,color,tikz}
\geometry{showframe}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\footrulewidth}{0.4pt}
some text...
\cfoot{
\begin{tikzpicture}
\draw[fill=gray,text=white,radius=0.5](0,0)circle node{1};
\draw[fill=red,text=white,radius=1](1.5,0)circle node{2};
\draw[fill=gray,text=white,radius=0.5](3,0)circle node{3};
\end{tikzpicture}
}
\end{document}
답변1
그런 것?
\documentclass{article}
\usepackage{fancyhdr,geometry,lastpage,refcount,lipsum,tikz}
\geometry{showframe}
\usetikzlibrary{positioning}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\footrulewidth}{0.4pt}
some text...
\newcounter{lastpagenumber}%
\setcounter{lastpagenumber}{\getrefbykeydefault{LastPage}{page}{1}}%
\cfoot{\begin{tikzpicture}
\coordinate (cn-0);
\foreach \X [remember=\X as \LastX (initially 0)] in {1,...,\thelastpagenumber}
{\ifnum\X=\thepage
\node[circle,fill=red,text=white,minimum size=1cm,right=0pt of cn-\LastX] (cn-\X) {\X};
\else
\node[circle,fill=gray,text=white,minimum size=0.5cm,right=0pt of cn-\LastX] (cn-\X) {\X};
\fi
}
\end{tikzpicture}
}
\lipsum[1-31]
\end{document}
물론 다양한 방법으로 출력을 사용자 정의할 수 있습니다.
\documentclass{article}
\usepackage{fancyhdr,geometry,lastpage,refcount,lipsum,tikz}
\geometry{showframe}
\usetikzlibrary{positioning}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\footrulewidth}{0.4pt}
some text...
\newcounter{lastpagenumber}%
\setcounter{lastpagenumber}{\getrefbykeydefault{LastPage}{page}{1}}%
\cfoot{\begin{tikzpicture}
\coordinate (cn-0);
\foreach \X [remember=\X as \LastX (initially 0)] in {1,...,\thelastpagenumber}
{\ifnum\X=\thepage
\node[circle,draw,thick,font=\sffamily\Large\bfseries,fill=red,text=white,minimum size=1cm,right=0pt of cn-\LastX] (cn-\X) {\X};
\else
\node[circle,draw,font=\sffamily\bfseries,fill=gray,text=white,minimum size=0.5cm,right=0pt of cn-\LastX] (cn-\X) {\X};
\fi
}
\end{tikzpicture}
}
\lipsum[1-31]
\end{document}
원이 약간 지루하다고 생각되면 다음을 수행할 수 있습니다.
\documentclass{article}
\usepackage{fancyhdr,geometry,lastpage,refcount,lipsum,tikzducks,tikzlings}
\geometry{showframe}
\usetikzlibrary{positioning,backgrounds}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\footrulewidth}{0.4pt}
some text...
\newcounter{lastpagenumber}%
\setcounter{lastpagenumber}{\getrefbykeydefault{LastPage}{page}{1}}%
\cfoot{\begin{tikzpicture}
\coordinate (cn-0);
\foreach \X [remember=\X as \LastX (initially 0)] in {1,...,\thelastpagenumber}
{\ifnum\X=\thepage
\node[font=\sffamily\Large\bfseries,text=white,minimum size=1cm,right=0pt of cn-\LastX] (cn-\X) {\X};
\begin{scope}[scale=0.4,on background layer,shift={(cn-\X.center)},yshift=-3em]
\marmot
\end{scope}
\else
\node[font=\sffamily\bfseries,text=black,minimum size=0.5cm,right=0pt of cn-\LastX] (cn-\X) {\X};
\begin{scope}[scale=0.3,on background layer,shift={(cn-\X.center)},yshift=-3em]
\koala
\end{scope}
\fi
}
\end{tikzpicture}
}
\lipsum[1-31]
\end{document}