Получаете более узкий текст в lstlistings?

Получаете более узкий текст в lstlistings?

У меня ограничено горизонтальное пространство для перечисления некоторого кода:

\documentclass[]{article}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},
    language=bash,
    basicstyle=\footnotesize\ttfamily,
    keepspaces=true,
}
\lstset{style=mystyle}
\begin{document}
\begin{lstlisting}
C_10 := elementwise.range_check(C_4,S_5,S_6)
\end{lstlisting}
\end{document}

и я хочу немного сжать его по горизонтали. (Да, я знаю, что в этом примере он простирается до конца строки; но, возможно, у меня он на мини-странице или в документе с несколькими столбцами и т. д.)

Теперь я не хочу идти \tiny, просто немного горизонтального сжатия. Если бы я не был в lstlistingsсреде, я мог быиспользуйте что-то вроде Scalebox, или, возможно,textls, но у меня на самом деле нет такой гибкости (я думаю) в среде lstlistings. Я предполагаю, что должно быть что-то, что мне нужно вставить в basicstyleпараметр пакета в \lstset; но - что?

решение1

Например, в современной латинице есть легкий tt, который немного тоньше, и сжатый tt, который намного тоньше.

введите описание изображения здесь

\documentclass[]{article}
\usepackage{xcolor}
\usepackage{listings}
\makeatletter
\def\lmtt@use@light@as@normal{}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle3}{
    backgroundcolor=\color{backcolour},
    language=bash,
    basicstyle=\fontencoding{T1}\footnotesize\fontfamily{lmtt}\fontseries{c}\selectfont,
    keepspaces=true,
}
\lstdefinestyle{mystyle2}{
    backgroundcolor=\color{backcolour},
    language=bash,
    basicstyle=\fontencoding{T1}\footnotesize\fontfamily{lmtt}\fontseries{m}\selectfont,
    keepspaces=true,
}
\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},
    language=bash,
    basicstyle=\footnotesize,
    keepspaces=true,
}
\lstset{style=mystyle}
\begin{document}
\begin{lstlisting}
C_10 := elementwise.range_check(C_4,S_5,S_6)
\end{lstlisting}

\lstset{style=mystyle2}
\begin{lstlisting}
C_10 := elementwise.range_check(C_4,S_5,S_6)
\end{lstlisting}

\lstset{style=mystyle3}
\begin{lstlisting}
C_10 := elementwise.range_check(C_4,S_5,S_6)
\end{lstlisting}

\end{document}

решение2

Вот способ, с более узким шрифтом, а именно URW Letter Gothic (доступен наКТАН:

\documentclass[]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{xcolor}
    \usepackage{listings}
    \definecolor{backcolour}{rgb}{0.95,0.95,0.92}
    \lstdefinestyle{mystyle}{
        backgroundcolor=\color{backcolour},
        language=bash,
        basicstyle=\footnotesize\ttfamily,
        keepspaces=true,
    }
    \lstset{style=mystyle}
    \usepackage{etoolbox}
    \AtBeginEnvironment{lstlisting}{\renewcommand\ttfamily{\fontfamily{ulg}\selectfont}}

    \begin{document}

    \noindent\verb|C_10 := elementwise.range_check(C_4,S_5,S_6)|
    \begin{lstlisting}
    C_10 := elementwise.range_check(C_4,S_5,S_6)
    \end{lstlisting}

    \begin{lstlisting}[basicstyle=\scriptsize\ttfamily]
    C_10 := elementwise.range_check(C_4,S_5,S_6)
    \end{lstlisting}

    \end{document} 

введите описание изображения здесь

Связанный контент