是否可以在逐字环境中使用非等宽字体?

是否可以在逐字环境中使用非等宽字体?

我知道这与很多观点背道而驰,但我想尝试不同的字体,看看我更喜欢哪种。如果可能的话,我似乎找不到任何关于如何做到这一点的参考资料。


编辑:

我最终使用了以下方法。这种方法更好,但还没有达到我想要的效果

\RequirePackage[T1]{fontenc}
\RequirePackage[scaled]{beramono}

我遇到的最大问题是,我发现等宽字体间距太大,导致文本占用了行中的更多空间。如果有人有其他建议,那就太好了。

答案1

lstlisting在来自包的环境的情况下listings,您可以使用basicstyle键来控制代码中普通文本的字体属性;一些示例:

\documentclass{article}
\usepackage{listings}

\begin{document}

\begin{lstlisting}[basicstyle=\sffamily]
Some text here
\end{lstlisting}

\begin{lstlisting}[basicstyle=\itshape]
Some text here
\end{lstlisting}

\begin{lstlisting}[basicstyle=\small\ttfamily]
Some text here
\end{lstlisting}

\begin{lstlisting}[basicstyle=\Large\normalfont]
Some text here
\end{lstlisting}

\end{document}

在此处输入图片描述

当然,这些修改最好\lstset在序言中全局进行:

\lstset{
  basicstyle=\small\sffamily}

您还可以使用columns键来控制间距;示例显示了四个可用值:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled]{beramono}
\usepackage{listings}

\lstset{columns=fullflexible}

\begin{document}

\begin{lstlisting}[basicstyle=\sffamily,columns=fixed]
Some text here
\end{lstlisting}

\begin{lstlisting}[basicstyle=\sffamily,columns=flexible]
Some text here
\end{lstlisting}

\begin{lstlisting}[basicstyle=\sffamily,columns=fullflexible]
Some text here
\end{lstlisting}

\begin{lstlisting}[basicstyle=\sffamily,columns=spaceflexible]
Some text here
\end{lstlisting}

\end{document}

在此处输入图片描述

再次强调,最好采用全局设置;例如:

\lstset{
  basicstyle=\small\sffamily,
  columns=fullflexible
}

答案2

是的,这是可能的。例如

\documentclass{article}

\begin{document}

\begin{verbatim}
I know it runs contrary to a lot of the point, 
but I'd like to experiment with different fonts to see 
which I like better. 
I can't seem to find any reference to a way to do this, 
if it's at all possible.
\end{verbatim}

\makeatletter
%\def\verbatim@font{\normalfont\ttfamily}
\def\verbatim@font{\normalfont\itshape}
\makeatother

\begin{verbatim}
I know it runs contrary to a lot of the point, 
but I'd like to experiment with different fonts to see 
which I like better. 
I can't seem to find any reference to a way to do this, 
if it's at all possible.
\end{verbatim}

\end{document}

在此处输入图片描述

答案3

LaTeX 定义

\def\verbatim@font{\normalfont\ttfamily}

所以

\makeatletter
\def\verbatim@font{\normalfont\sffamily}
\makeatother

会使其使用 sans。请注意,如果您使用的是 OT1 编码,那么大多数非 tt 字体都没有 ascii 字符的预期字形,<因此您可能希望使用 T1 编码(无论如何,这是一个好主意)。

答案4

虽然这需要再设置几个步骤,但它搭载在 verbatimbox 包上(通常将 verbatim 设置在盒子中),为您提供了一个方便的调用机制,作为环境的可选参数。

\documentclass{article}
\usepackage{verbatimbox}
\makeatletter
\newenvironment{verblist}{%
  \setcounter{VerbboxLineNo}{-1}%
  \let\my@par\par%
  \def\verbatim@processline{%
    {\addtocounter{VerbboxLineNo}{1}%
    \@tmp\setbox0=\hbox{\@tmp\the\verbatim@line}%
    \hsize=\wd0 \the\verbatim@line\my@par}}%
\verbatim\verbbox@inner%
}
{\endverbatim\global\def\@tmp{}}
\makeatother
\begin{document}

\begin{verblist}[\sffamily]
this is a test
of the verblist environment
in a sans serif font
\end{verblist}

\begin{verblist}[\rmfamily\itshape]
this is a test
of the verblist environment
in a roman italic font
\end{verblist}


\end{document}

在此处输入图片描述

相关内容