Wie ändere ich die Schriftgröße **nur** für \lstinline{}?

Wie ändere ich die Schriftgröße **nur** für \lstinline{}?

Auf den ersten Blick mag dies wie ein Duplikat aussehen voneine andere Fragebereits geschlossen als Duplikat vonDieses hier. Ist es aber nicht ;-)

Wie stelle ich einglobaldie Schriftgröße aller \lstinlineMakros, unabhängig von der Schriftgröße der lstlistingUmgebungen?

Meine Standardeinstellung für die Umgebungen ist \small, was sehr gut aussieht, aber ich brauche die normale Größe für Inline-Texte, da diese sich besser mit dem umgebenden Text vermischen.

Nachfolgend, wie gewünscht, ein MWE, das die Wiederholung von \lstsetMakros zeigt:

\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\ttfamily\small,numbers=left}

\begin{document}

\begin{lstlisting}
Displayed code listings
    Look great
In a small font
\end{lstlisting}

I would like \lstinline{inline listings} to be at normalsize as in
\lstset{basicstyle=\ttfamily}%
\lstinline{this piece of code}
but then I have to issue a new \verb|lstset| macro
\lstset{basicstyle=\ttfamily\small}%
in order to get back to small size

\begin{lstlisting}
for displayed code listings
    to show appropiately.
again
\end{lstlisting}

\end{document}

Bildbeschreibung hier eingeben

Antwort1

Wie wäre es mit der Erstellung eines neuen Befehls wie \myinlinein meinem MWE:

\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\ttfamily\small,numbers=left}
\newcommand{\myinline}[1]{\lstinline[basicstyle={\ttfamily\normalsize}]{#1}}

\begin{document}

\begin{lstlisting}
Displayed code listings
    Look great
In a small font
\end{lstlisting}

I would like \lstinline{inline listings} to be at normalsize as in
\myinline{this piece of code}
but then I have to issue a new \verb|lstset| macro
in order to get back to small size

\begin{lstlisting}
for displayed code listings
    to show appropiately.
again
\end{lstlisting}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Wenn man sich den Code ansieht, sieht man, dass es keine Methode gibt, zwischen den beiden zu unterscheiden. Aber wir scheinen in der Lage zu sein, eine zu erstellen, da es intern \lstinlineausgeführt wird \lstset, sodass wir einen Patch hinzufügen könnten. Keine Ahnung, ob dies andere Konsequenzen hat.

\documentclass[a4paper]{article}
\usepackage{listings,xcolor,xpatch}

\lstset{
  basicstyle=\color{red}\ttfamily,
}

% style for inline
\lstdefinestyle{foobar}{
  basicstyle=\color{green}\ttfamily\tiny,
}

% \ShowCommand\lstinline shows \lstinline runs \lstset{flexiblecolumns,#1}, so we mess with that
\makeatletter
\xpatchcmd\lstinline{flexiblecolumns,}{flexiblecolumns,style=foobar,}{}{\typeout{patch failed}}
\makeatother


\begin{document}

\begin{lstlisting}
FooBar
\end{lstlisting}

inline \lstinline|FooBar|
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Unter einem anderen Namen speichern \lstinlineund neu definieren, um dem Original auch die Option basicstyle=\ttfamily(ohne \small) zu übergeben.

\documentclass{article}
\usepackage{listings}

\lstset{basicstyle=\ttfamily\small,numbers=left}

\NewCommandCopy{\originallstinline}{\lstinline}
\RenewDocumentCommand{\lstinline}{O{}}{%
  \originallstinline[basicstyle=\ttfamily,#1]%
}

\begin{document}

\begin{lstlisting}
Displayed code listings
    Look great
In a small font
\end{lstlisting}

Here I see that \lstinline{inline listings} is at normalsize
and there is no need to issue a new \verb|lstset| macro
in order to get back to small size

\begin{lstlisting}
for displayed code listings
    to show appropriately.
again
\end{lstlisting}

We can also pass options like in \lstinline[language=TeX]|\LaTeX|

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen