我正在使用列表包,用于设置列表中字体大小的命令是:
\lstset{basicstyle = \small}
我想修改它以使用介于\ small和\ normalsize之间一半的字体大小。这样的事情不起作用:
\lstset{basicstyle = 0.5\small+0.5\normalsize}
是否可以根据需要设置字体大小?
答案 0 :(得分:1)
这取决于您的文档类设置。例如,\small
文档类别选项下的10pt
是9pt
,而\normalsize
是10pt
(当然是由于类别选项)。有关基于\documentclass
的其他尺寸,请参见What point (pt) font size are \Large
etc.?。基于此,通过basicstyle
手动将9.5pt
设置为\fontsize{9.5}{11.5}\selectfont
(使用适当的中间基线跳过),或通过\smalltonormalsize
使用以下自动计算作为字体切换:
\documentclass{article}
\usepackage{listings,xfp}
\usepackage{anyfontsize}
\makeatletter
{\small % Capture font definitions of \small
\xdef\f@size@small{\f@size}
\xdef\f@baselineskip@small{\f@baselineskip}
\normalsize % Capture font definitions for \normalsize
\xdef\f@size@normalsize{\f@size}
\xdef\f@baselineskip@normalsize{\f@baselineskip}
}
% Define new \smalltonormalsize font size
\newcommand{\smalltonormalsize}{%
\fontsize
{\fpeval{(\f@size@small+\f@size@normalsize)/2}}
{\fpeval{(\f@baselineskip@small+\f@baselineskip@normalsize)/2}}%
\selectfont
}
\makeatother
\begin{document}
\begin{lstlisting}[basicstyle = \ttfamily\small]
Hello world A
\end{lstlisting}
\begin{lstlisting}[basicstyle = \ttfamily\smalltonormalsize]
Hello world B
\end{lstlisting}
\begin{lstlisting}[basicstyle = \ttfamily\normalsize]
Hello world C
\end{lstlisting}
\end{document}