I'm trying to understand use the below user defined command. Could someone help me understand how the command works? In particular, I am a bit confused on what the [0.25em] does here, what {@{}l} and {l@{}} mean. The latter 2 seems like some kind of alignment but I couldn't seem to find definitive information on this.
Also, what does the if else statement at the end do?
\newcommand*{\customcventry}[7][.25em]{
\begin{tabular}{@{}l}
{\bfseries #4}
\end{tabular}
\hfill% move it to the right
\begin{tabular}{l@{}}
{\bfseries #5}
\end{tabular} \\
\begin{tabular}{@{}l}
{\itshape #3}
\end{tabular}
\hfill% move it to the right
\begin{tabular}{l@{}}
{\itshape #2}
\end{tabular}
\ifx&%
\else{\\%
\begin{minipage}{\maincolumnwidth}%
\small#7%
\end{minipage}}\fi%
\par\addvspace{#1}}
Here's an example of its usage (actually, I've changed this since I downloaded template, so I'm not sure if this is the original intended usage):
{\customcventry{Adviser:}{Degree Name}{University of Blah}{Expected Graduate date}{}{Concentration: }}

[.25em]means that the command has an optional argument with default value.25em. That is, by default you will have\addvspace{.25em}but if you call\customcventry[.1em]that distance will change to.1em, say.{@{}l}means (basically) "left-aligned column with tight space on the left", and likewise for{l@{}}. (I am not sure I like this command because it introduces stray spaces and so on, but this is just an opinion.) – May 12 '20 at 23:56#1, which you pass to the command in square brackets, or just not pass it. – May 13 '20 at 00:00ifstatement is doing? I don't know what the conditionx&%means. – David May 13 '20 at 02:01\customcventryis used? It's much easier to go through the elements of this macro if one can refer to an example of what, say,#3could be. – Mico May 13 '20 at 02:14\customcventryis very similar to\mycvbut not identical. BTW,\ifx&%tests whether #7 is empty. When#7is empty,\ifxsees two&, which are equal, so the test is true (and nothing is done). If the test fails, aminipagewith#7in it will be created. The bottomline is that this is yet another way to customize an entry in themoderncvclass, hence the name\customcventry. – May 13 '20 at 02:30{\customcventry{Adviser:}{Degree Name}{University of Blah}{Expected Graduate date}{}{Concentration: }}, theAdviser:argument is the second argument? The first argument, if I choose to use it, has square brackets,[]? So for example, I could do{\customcventry[0.1em]{Adviser:}{Degree Name}{University of Blah}{Expected Graduate date}{}{Concentration: }}? – David May 13 '20 at 02:49