页面之间的分割列表环境忽略了一些 tikz 效果

页面之间的分割列表环境忽略了一些 tikz 效果

我想使用\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}

首页页码未加粗:

enter image description here

而第二个是可以的(有粗体)。

enter image description here

答案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}

相关内容