\documentclass{article}
\usepackage{amssymb,amsmath}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{listings}

\lstdefinelanguage{Octave}%
{columns=fullflexible,
keywords={if,else,while,elseif,return,for,end,%
          function},%
   sensitive=true,%
   basicstyle={\linespread{1.}\usefont{T1}{lmss}{m}{n}\color{black!90!white}},%
   keywordstyle={\usefont{T1}{lmss}{sbc}{n}\selectfont\color{blue!60!black}},%
   keywordstyle=[2]{\color{red!60!black}\it},%
   keywordstyle=[3]{\usefont{T1}{lmss}{sbc}{n}\selectfont\color{green!60!black}},%
   mathescape = true,%
   morecomment=[l][\color{black!50!white}\texttt]{\%},%
   literate={'}{{$\strut\mkern5mu\strut$}}1%
   {<=}{$\leq$}2%
   {>=}{$\geq$}2%
   {==}{$\equiv$}1%
}

\makeatletter
\def\octave{\lstset{language=Octave}\lstinline}
\def\octaveV[#1]{\lstset{language=Octave,keywords=[2]{#1}}\lstinline}
\makeatother

\newcommand{\octaveF}[3]{\lstset{language=Octave, keywords=[2]{#1}, keywords=[3]{#2}}\lstinline{#3}}

\lstnewenvironment{Octave}
{\lstset{language=Octave}}{}
\lstnewenvironment{OctaveV}[1]
{\lstset{language=Octave,keywords=[2]{#1}}}{}
\lstnewenvironment{OctaveF}[2]
{\lstset{language=Octave,keywords=[2]{#1},keywords=[3]{#2}}}{}

\begin{document}

 Środowisko \texttt{Octave} ustawia jedynie język octave i nie koloruje zmiennych ani funkcji. Środowisko \texttt{OctaveV} umożliwia dodatkowo przekazanie argumentu dotyczącego zmiennych, natomiast \texttt{OctaveF} obsługuje również nazwy funkcji.

Wstawianie kodu za pomocą \texttt{Octave} w tekście jest możliwe dzięki komendzie \verb|\lstinline|, która została sparametryzowana pod kątem zmiennych oraz nazw funkcji. Na chwilę obecną nie chcę pokazywać, jak zdefiniować komendę \verb|\def| z większą liczbą parametrów lub z parametrami opcjonalnymi, dlatego zastosowałem podstawowe użycie \verb|newcommand|.
Przykłady (uwaga na rodzaje nawiasów):
\begin{itemize}
\item[\texttt{octaveV}] \octaveV[f,n]{function'f'='fibonacci(n)}
\item[\texttt{octaveF}] \octaveF{f,n}{fibonacci}{function'f'='fibonacci(n)}
\end{itemize}

W środowisku \texttt{Octave} podwójny znak równości jest automatycznie zamieniany na $\equiv$(\verb|\eqref|).
Pustą tablicę \texttt{[]} zastąpiłem symbolem $\langle\rangle$ (\verb|\langle\rangle|), aby pokazać, że można wstawiać kod w zapisie matematycznym.
Znak \texttt{'} jest używany w celu wstawienia krótszej spacji.

Poniższy kod został zaproponowany przez ChatGPT.

\begin{OctaveF}{f,n,i}{fibonacci,zeros}
function'f'='fibonacci(n)
  % Funkcja zwraca n pierwszych liczb ciagu Fibonacciego

  if'n'<='0
      f'='$\langle\rangle$;
      return;
  elseif'n'=='1
      f'='0;
      return;
  end

  f = zeros(1,n);  % tworzymy wektor n-elementowy
  f(1)'='0;
  f(2)'='1;

  for i'='3:n
      f(i)'='f(i-1)'+'f(i-2);
  end
end
\end{OctaveF}

\end{document}