Como escrever se outra condição para espaçamento vertical em novo ambiente

Como escrever se outra condição para espaçamento vertical em novo ambiente

Eu defini um ambiente da seguinte maneira. Eu gostaria de fazer uma modificação onde não adicionasse espaço vertical em branco se nenhum argumento fosse fornecido.

\documentclass[10]{article}
\usepackage[a4paper, margin=1in]{geometry}
\usepackage{tabu}

\usepackage{enumitem}
\setlist{leftmargin=5mm, noitemsep, topsep=-1\parskip}

\newenvironment{cvsection}[1]{
    \vspace{3pt}
    \hspace{3pt}{\scriptsize{\textbf{#1}}}
    \vspace{2pt}
    \hrule
}

\newenvironment{cvsubsection}[3]{
    \vspace{-8pt}
    \begin{center}
        \begin{tabu} to 1\textwidth { X[l,m] X[c,m] X[r,m] }
            \textbf{\small #1} & \textbf{\small #2} & \textbf{\small #3} \\
        \end{tabu}  
    \end{center}
}

\begin{document}
    \begin{cvsection}{LANGUAGES \& TECHNOLOGIES}
        \begin{cvsubsection}{}{}{}  
            \begin{itemize}
                \item C++; C; Java; Objective-C; C\#.NET; SQL; JavaScript; XSLT; XML (XSD) Schema 
                \item Visual Studio; Microsoft SQL Server; Eclipse; XCode; Interface Builder
            \end{itemize}
        \end{cvsubsection}
    \end{cvsection}
\end{document}

O acima dá o seguinte. Gostaria de remover o espaçamento branco marcado em vermelho, se não fornecer argumentos para meu arquivo cvsubsection. Se eu fornecer argumentos, deverá funcionar conforme já definido acima.

insira a descrição da imagem aqui

Saída desejada com código relevante(O código NOTA é apenas para mostrar a saída o que eu quero. Ainda quero passar argumentos vazios para o meu cvsubsection)

\begin{cvsection}{LANGUAGES \& TECHNOLOGIES}
%   \begin{cvsubsection}{}{}{}
    \vspace{4pt}
        \begin{itemize}
            \item C++; C; Java; Objective-C; C\#.NET; SQL; JavaScript; XSLT; XML (XSD) Schema 
            \item Visual Studio; Microsoft SQL Server; Eclipse; XCode; Interface Builder
        \end{itemize}
%   \end{cvsubsection}
\end{cvsection}

insira a descrição da imagem aqui

Responder1

Uma ideia com verificação apenas do primeiro argumento de cvsubsection (já que sinto que se estiver vazio... os outros também estarão vazios - sinta-se à vontade para me pedir para estender a verificação aos outros também-)

\documentclass{article}
\usepackage{tabu}
\usepackage{enumitem}
\setlist{leftmargin=5mm, noitemsep, topsep=-1\parskip}

\newenvironment{cvsection}[1]{
    \vspace{3pt}
    \hspace{3pt}{\scriptsize{\textbf{#1}}}
    \vspace{2pt}
    \hrule
}

\newenvironment{cvsubsection}[3]{
    \edef\FirstArg{#1}
    \ifx\FirstArg\empty\vspace{-25pt}\fi
    \begin{center}
        \begin{tabu} to 1\textwidth { X[l,m] X[c,m] X[r,m] }
            \textbf{\small #1} & \textbf{\small #2} & \textbf{\small #3} \\
        \end{tabu}  
    \end{center}
}

\begin{document}
    \begin{cvsection}{LANGUAGES \& TECHNOLOGIES}
        \begin{cvsubsection}{}{}{}  
            \begin{itemize}
                \item C++; C; Java; Objective-C; C\#.NET; SQL; JavaScript; XSLT; XML (XSD) Schema 
                \item Visual Studio; Microsoft SQL Server; Eclipse; XCode; Interface Builder
            \end{itemize}
        \end{cvsubsection}

        \begin{cvsubsection}{Arg2}{Arg3}{Arg4}  
            \begin{itemize}
                \item C++; C; Java; Objective-C; C\#.NET; SQL; JavaScript; XSLT; XML (XSD) Schema 
                \item Visual Studio; Microsoft SQL Server; Eclipse; XCode; Interface Builder
            \end{itemize}
        \end{cvsubsection}
    \end{cvsection}
\end{document}

insira a descrição da imagem aqui

informação relacionada