将尺寸设置在小尺寸和标准尺寸之间

时间:2018-10-10 17:23:58

标签: latex tex

我正在使用列表包,用于设置列表中字体大小的命令是:

\lstset{basicstyle = \small}

我想修改它以使用介于\ small和\ normalsize之间一半的字体大小。这样的事情不起作用:

\lstset{basicstyle = 0.5\small+0.5\normalsize}

是否可以根据需要设置字体大小?

1 个答案:

答案 0 :(得分:1)

这取决于您的文档类设置。例如,\small文档类别选项下的10pt9pt,而\normalsize10pt(当然是由于类别选项)。有关基于\documentclass的其他尺寸,请参见What point (pt) font size are \Large etc.?。基于此,通过basicstyle手动将9.5pt设置为\fontsize{9.5}{11.5}\selectfont(使用适当的中间基线跳过),或通过\smalltonormalsize使用以下自动计算作为字体切换:

enter image description here

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