Espaciado y llamadas integradas a \DTLifnullorempty

Espaciado y llamadas integradas a \DTLifnullorempty

Parece que incorporar llamadas a \DTLifnulloremptyuna dentro de otra genera un espacio adicional para cada llamada a \DTLifnullorempty. ¿Hay alguna manera de prevenir este comportamiento? En particular, me gustaría que el siguiente MWE produzca un documento donde cada línea tenga la misma cantidad de espacio entre AAAel material anterior y el anterior. Comparar:

ingrese la descripción de la imagen aquí

\documentclass{article}

\setlength{\parindent}{0pt}

\begin{filecontents*}{test.csv}
One,Two,Three,Four
a,b,c,d
a,b,c,
a,b,,
a,,,
\end{filecontents*}

\usepackage{datatool}
\DTLloaddb{test}{test.csv}

\begin{document}

\section{Undesired output}
\frenchspacing
\DTLforeach*{test}{%
    \One=One,
    \Two=Two,
    \Three=Three,
    \Four=Four%
}{%
    \One\DTLifnullorempty{\Four}{%
        % If \Four is empty
        % Check if \Three is empty
        \DTLifnullorempty{\Three}{%
            % If \Three is empty
            % Check if \Two is empty
            \DTLifnullorempty{\Two}{%
                % If \Two is empty
                .%
            }{%
                % If \Two is not empty
                . \Two.
            }
        }{%
            % If \Three is not empty
            . \Two. \Three.%
        }
    }{%
        % If \Four is not empty
        . \Two. \Three. \Four.%
    }
    AAA\par
}

\section{Desired output}

a. b. c. d. AAA\par
a. b. c. AAA\par
a. b. AAA\par
a. AAA\par

\end{document}

Respuesta1

El espacio solo aparece donde lo agregaste:

ingrese la descripción de la imagen aquí

\documentclass{article}

\setlength{\parindent}{0pt}

\begin{filecontents*}{test.csv}
One,Two,Three,Four
a,b,c,d
a,b,c,
a,b,,
a,,,
\end{filecontents*}

\usepackage{datatool}
\DTLloaddb{test}{test.csv}

\begin{document}

\section{Undesired output}
\frenchspacing
\DTLforeach*{test}{%
    \One=One,
    \Two=Two,
    \Three=Three,
    \Four=Four%
}{%
    \One\DTLifnullorempty{\Four}{%
        % If \Four is empty
        % Check if \Three is empty
        \DTLifnullorempty{\Three}{%
            % If \Three is empty
            % Check if \Two is empty
            \DTLifnullorempty{\Two}{%
                % If \Two is empty
                .%
            }{%
                % If \Two is not empty
                . \Two.%
            }%
        }{%
            % If \Three is not empty
            . \Two. \Three.%
        }%
    }{%
        % If \Four is not empty
        . \Two. \Three. \Four.%
    }
    AAA\par
}

\section{Desired output}

a. b. c. d. AAA\par
a. b. c. AAA\par
a. b. AAA\par
a. AAA\par

\end{document}

información relacionada