我想使用\AtBeginShipout
宏在 Tikz 节点中设置装饰页码包装,但是当lstlisting
使用basicstyle
选项设置字体\ttfamily
在页面之间分隔时,页码的某些字体功能没有正常效果;在我的例子中,它是粗体!
下面的代码展示了该问题,它将由和同时pdflatex
生成xelatex
。
\documentclass{article}
\usepackage{atbegshi}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{listings}
\AtBeginShipout{\AtBeginShipoutAddToBox{%
\begin{tikzpicture}[remember picture, overlay,]
\node [draw, circle, color=gray, yshift=2cm] at (current page.south){\textbf{\LARGE\thepage}};
\end{tikzpicture}%
}}
\pagestyle{empty}
\lstset{ basicstyle=\color{black}\ttfamily\small,
frameround=tftf, frame=ltbr,}
\begin{document}
\lipsum[1-4]
\begin{lstlisting}
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
\end{lstlisting}
\lipsum
\end{document}
首页页码未加粗:
而第二个是可以的(有粗体)。
答案1
您tikzpicture
似乎在页面末尾使用了当前字体。 在第一页的末尾,当前字体是\ttfamily\small
(如您的ltlisting
环境中所指定的)。
作为解决方法,您可以添加\rmfamily
到您的节点(并使用font
密钥):
\documentclass{article}
\usepackage{atbegshi}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{listings}
\AtBeginShipout{\AtBeginShipoutAddToBox{%
\begin{tikzpicture}[remember picture, overlay,]
\node [draw, circle, color=gray, yshift=2cm,font=\rmfamily\bfseries\Large]
at (current page.south){\thepage};
\end{tikzpicture}%
}}
\pagestyle{empty}
\lstset{ basicstyle=\color{black}\ttfamily\small,
frameround=tftf, frame=ltbr,}
\begin{document}
\lipsum[1-4]
\begin{lstlisting}
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
print ('hello worlds')
\end{lstlisting}
\lipsum
\end{document}