Как написать условие if else для вертикального интервала в newenvironment

Как написать условие if else для вертикального интервала в newenvironment

Я определил среду следующим образом. Я хотел бы иметь модификацию, которая не добавляет белое вертикальное пространство, если не указаны аргументы.

\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}

Вышеприведенное дает следующее. Я хотел бы удалить пробел, отмеченный красным, если я не предоставлю аргументы моему cvsubsection. Если я предоставлю аргументы, это должно работать так, как уже определено выше.

введите описание изображения здесь

Желаемый результат с соответствующим кодом(ПРИМЕЧАНИЕ. Код нужен только для того, чтобы показать вывод, который мне нужен. Я по-прежнему хочу передавать пустые аргументы в свой 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}

введите описание изображения здесь

решение1

Идея с проверкой только первого аргумента cvsubsection (поскольку я чувствую, что если он пуст... остальные тоже будут пустыми - не стесняйтесь просить меня распространить проверку и на остальные тоже-)

\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}

введите описание изображения здесь

Связанный контент