I'm using overleaf,
I want to create a \codewithcustom
command that will be used like
\codewithcustom{cpp}{some caption}{
int a[10];
}
but I always get fancy verb error
.
Can you please help me convert the code-block syntax into easier custom command?
Also, here's a minimal reproducible example.
\documentclass{article}
\usepackage{minted}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{xparse}
\definecolor{LightGray}{gray}{0.98}
% Global minted settings
\setminted{frame=none,
breaklines=true,
framesep=5mm,
fontsize=\large,
baselinestretch=1.2,
bgcolor=LightGray,
tabsize=2,
linenos}
\title{C++ \& Python Personal Notes}
\author{Rakesh Shrestha}
\date{January 2025}
\begin{document}
\maketitle
\section{Vectors \& raw Arrays}
\subsection{Initialization}
% I want to create this to be used as a custom command
\begin{listing}[!ht]
\begin{minted}{cpp}
vector<vector<int>> bucket(maxFreq + 1);
for(const auto& a: hmap){
bucket[a.second].push_back(a.first);
}
\end{minted}
\caption{Initialize empty elements with specified size in vectors}
\label{listing: 1}
\end{listing}
\begin{listing}[!ht]
\begin{minted}{cpp}
vector<vector<int>> bucket(10, 2);
\end{minted}
\caption{Initialize specified vectors with data}
\end{listing}
\end{document}
What I tried,
\newcommand{\codewithcaption}[3]{
\begin{listing}
\begin{minted}{#1}
#3
\end{minted}}
\caption{#2}
\end{listing
Using fragile material, like verbatim code, in the argument of a macro isn't the best of ideas. Better use an environment
:
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{LightGray}{gray}{0.98}
\usepackage[many]{tcolorbox}
\tcbuselibrary{minted}
\AtBeginDocument{
\newtcblisting[blend into=listings]{codewithcustom}[2]{
listing engine=minted,
minted language=#1,
title=#2,
detach title,
coltitle=black,
listing and comment,
comment=\centering\tcbtitle,
oversize,
enhanced,
interior hidden,
frame hidden,
segmentation hidden,
minted options={
breaklines=true,
framesep=5mm,
fontsize=\large,
baselinestretch=1.2,
bgcolor=LightGray,
tabsize=2,
linenos
}
}
}
\begin{document}
\begin{codewithcustom}{cpp}{Initialize empty elements with specified size in vectors}
vector<vector<int>> bucket(maxFreq + 1);
for(const auto& a: hmap){
bucket[a.second].push_back(a.first);
}
\end{codewithcustom}
\begin{codewithcustom}{cpp}{Initialize empty elements with specified size in vectors}
vector<vector<int>> bucket(maxFreq + 1);
for(const auto& a: hmap){
bucket[a.second].push_back(a.first);
}
\end{codewithcustom}
\end{document}