列表字体大小适合 80 列吗?

列表字体大小适合 80 列吗?

我想使用 listing 包将代码包含在我的 LaTeX 文档中。

我在谷歌上搜索没有找到任何字体大小的配置,实际上可以适合文档宽度的大约 80 列。

我见过的大多数示例都使用预定义的尺寸:

\lstset{
  basicstyle=\ttfamily\footnotesize,
  ...
}

到目前为止,我发现的所有的都太大(\small\footnotesize\scriptsize)或太小(\tiny)。

有没有办法手动配置字体的大小(可能不会弄乱所有其他字体配置),或者至少有一个接近 80 列的预配置设置?

我意识到利润率可能会有所不同等等,但到目前为止,我所看到的所有利润率都相差甚远。

答案1

由于使用了离散步骤,因此可能会有点短。我尝试了各种字体大小,直到适合八十列。使用可自由缩放的字体很重要,否则长度会更短(由您决定),因此要么使用fix-cmPostScriptlmodern字体,要么使用打字机字体。

\documentclass[11pt]{article}

% freely scalable fonts
\usepackage{fix-cm}

\usepackage{listings}

\usepackage{lipsum} % for the example

\newlength{\eightytt}
\newcommand{\testthewidth}{%
  \fontsize{\dimen0}{0}\selectfont
  \settowidth{\dimen2}{x}%
  \ifdim 80\dimen2>\textwidth
    \advance\dimen0 by -.1pt
    \expandafter\testthewidth
  \else
    \global\eightytt\dimen0
  \fi
}

\AtBeginDocument{%
  \dimen0=\csname f@size\endcsname pt
  \begingroup
  \ttfamily
  \testthewidth
  \endgroup
  \lstset{
    columns=fullflexible,
    basicstyle=\fontsize{\eightytt}{1.2\eightytt}\ttfamily
  }%
}

\begin{document}

\lipsum[2]
\begin{lstlisting}
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
\end{lstlisting}
\end{document}

在此处输入图片描述


如果需要非灵活的列,我们可以考虑到当前字体中单元格宽度的默认值为 0.6em:

\documentclass[11pt]{article}

% freely scalable fonts
\usepackage{fix-cm}

\usepackage{listings}

\usepackage{lipsum} % for the example

\newlength{\eightytt}
\newcommand{\testthewidth}{%
  \fontsize{\dimen0}{0}\selectfont
  \sbox0{x\global\dimen1=0.6em}%
  \ifdim 80\dimen1>\textwidth
    \advance\dimen0 by -.1pt
    \expandafter\testthewidth
  \else
    \global\eightytt\dimen0
  \fi
}

\AtBeginDocument{%
  \dimen0=\csname f@size\endcsname pt
  \begingroup
  \ttfamily
  \testthewidth
  \endgroup
  \lstset{
    basicstyle=\fontsize{\eightytt}{1.2\eightytt}\ttfamily
  }%
}

\begin{document}

\lipsum[2]
\begin{lstlisting}
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
\end{lstlisting}
\end{document}

在此处输入图片描述

相关内容