
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 \lstinline
Makros, unabhängig von der Schriftgröße der lstlisting
Umgebungen?
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 \lstset
Makros 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}
Antwort1
Wie wäre es mit der Erstellung eines neuen Befehls wie \myinline
in 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}
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 \lstinline
ausgefü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}
Antwort3
Unter einem anderen Namen speichern \lstinline
und 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}