بستهی pgfkeys تقریبا همه نیازهای شما را برآورده میکند. شما میتوانید مقدار آرگومان را به عنوان ضروری در نظر بگیرید. مثلا اگر بخواهید مقدار آرگومان name ضروری باشد یعنی name حتما مقداری داشته باشد به این این صورت عمل میکنید
name/.value required
اما این در صورتی که کلید name وجود نداشته باشد ایرادی نمیگیرد و گزینهای هم در pgfkeys ندیدم (شاید باشد و من بلد نباشم) که این مورد شما را برآورده کند ولی پیادهسازی آن نیز با استفاده از pgfkeys کار مشکلی نیست اگر میخواهید خود کلید نیز ضروری باشد اولا همانند بالا مقدار آن را ضروری میکنید و سپس در تعریف دستور مقدارآن را مثلا برابر novalue قرار میدهید اگر این مقدار تغییر نکرد یعنی کاربر مقداری برای آن تعریف نکرده پس مقدار آن را برابر خالی در نظر میگیریم و پیام هشداری را صادر میکنیم. با این توضیحات کد شما به شکل زیر است.
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{tcolorbox}
\usepackage{pgfkeys}
\usepackage{xepersian}
\settextfont{Yas}
\setdigitfont{Yas}
\begin{document}
\pagestyle{empty}
\pgfkeys{
/stinfo/.cd,
name/.value required,
name/.store in=\name,
surname/.store in=\surname,
father/.store in=\father,
studentid/.store in=\studentid,
school/.store in=\school,
city/.store in=\city,
}
\tcbset{colframe=red!50!black,colback=white}
\newcommand{\makeinfo}[1]{
\pgfkeys{/stinfo/.cd,name=novalue,surname,father,studentid,school,city,#1}
\def\noname{novalue}
\ifx\name\noname\PackageWarning{your package name}{name is required}{}\def\name{}\fi
\begin{tcolorbox}[width=\textwidth,colback=red!5!white]
\begin{tabular}{p{5cm}r}
نام: \name & شماره دانش آموزی: \studentid \\
نام خانوادگی: \surname & آموزشگاه: \school\\
نام پدر: \father & شهر: \city\\
\end{tabular}
\end{tcolorbox}
}
\makeinfo{
name=جواد,
surname=علوی,
father=حمید,
school=خوارزمی,
city=قم,
studentid=123456,
}
\makeinfo{
surname=علوی,
father=حمید,
school=خوارزمی,
city=قم,
}
\end{document}
و خروجی شما به درستی و بدون خطا ساخته میشود
و پیغام هشدار نیز صادر میشود
پیروز باشید