Agregar un argumento predeterminado a un comando personalizado

Agregar un argumento predeterminado a un comando personalizado

Estoy usando el paquete de listados para mostrar código Python, pero parece que no puedo proporcionar un argumento opcional que sea el tamaño de fuente utilizado por el algoritmo. Me gustaría que el algoritmo se imprimiera en tamaño normal, pero si paso un parámetro al pythonentorno, usaría el nuevo tamaño de fuente. He visto muchas publicaciones sobre cómo funciona \newcommand, pero parece que no puedo hacerlo funcionar (he vistoesteyestePor ejemplo ). El código con el que comencé es este:

\documentclass{article}

\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{listings}

\newcommand\pythonstyle{\lstset{language=Python,
  basicstyle=\ttfamily\normalsize,
  showstringspaces=false,
  emph={ClassName},          % Custom highlighting
  morekeywords={>, >=, <, <=, ==, !=, __init__, __new__, __lt__, __eq__, __ne__, __le__, __ge__, __gt__, __repr__, __str__, __del__, __format__, __hash__, __bool__}
}}
% Python environment
\lstnewenvironment{python}[1][mathescape]
{
\pythonstyle
\lstset{#1}
}
{}

\begin{document}

\begin{python}
def hi(s):
    print("how are you?")
\end{python}

\end{document}

Respuesta1

No haría esto porque la solución de la pregunta ya admite el uso, por ejemplo, \begin{python}[\basicstyle=\ttfamily\Huge]sin embargo:

\documentclass{article}

\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{listings}

\newcommand\pythonstyle[1][\normalsize]{\lstset{language=Python,
  basicstyle=\ttfamily#1,
  showstringspaces=false,
  emph={ClassName},          % Custom highlighting
  morekeywords={>, >=, <, <=, ==, !=, __init__, __new__, __lt__, __eq__, __ne__, __le__, __ge__, __gt__, __repr__, __str__, __del__, __format__, __hash__, __bool__}
}}
% Python environment
\lstnewenvironment{python}[1][\normalsize]
{
\pythonstyle[#1]
}
{}

\begin{document}

\begin{python}
def hi(s):
    print("how are you?")
\end{python}

\begin{python}[\Huge]
def hi(s):
    print("how are you?")
\end{python}


\end{document}

información relacionada