\iffalse meta-comment File l3syntax-changes.tex Copyright (C) 2011-2012,2017 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or (at your option) any later version. The latest version of this license is in the file http://www.latex-project.org/lppl.txt This file is part of the "l3kernel bundle" (The Work in LPPL) and all files in that bundle must be distributed together. The released version of this bundle is available from CTAN. \fi \documentclass{l3doc} \title{% Syntax changes in \LaTeX3 functions% } \author{% The \LaTeX3 Project\thanks {% E-mail: \href{mailto:latex-team@latex-project.org}% {latex-team@latex-project.org}% }% } \date{Released 2017/05/13} \newcommand{\TF}{\textit{(TF)}} \begin{document} \maketitle This file lists functions whose syntax has changed after August 2011, with an approximate date. \section{August 2011} \begin{itemize} \item \cs{tl_if_single:n\TF} recognized any non-zero number of explicit spaces as \meta{true}, and did not ignore trailing spaces. Now it is \meta{true} for \[ \meta{optional spaces} \meta{normal token or brace group} \meta{optional spaces}. \] \item \cs{tl_reverse:n} stripped outer braces and lost unprotected spaces. Now it keeps spaces, leaves unbraced single tokens unbraced, and braced groups braced. \item \cs{tl_trim_spaces:n} only removed one leading and trailing space. Now removes recursively. Also, on the left it used to strip implicit and explicit spaces with any character code. Now it strips only explicit space characters $(32,10)$. \end{itemize} \section{September 2011} \begin{itemize} \item clist functions which receive an \texttt{n}-type comma list argument now trim spaces from each item in the argument. \end{itemize} \section{June 2012} \begin{itemize} \item Access to list functions now indexes from~$1$, not from~$0$. This applies to multiple choices in the \pkg{l3keys} module and the \cs{clist_item:Nn}, \cs{seq_item:Nn} and \cs{tl_item:Nn} functions. \item \cs{tl_trim_spaces:n} now requires a variable number of expansions to fully expand, rather than exactly two. Of course, \texttt{x}-type expansion still correctly evaluates this function. \end{itemize} \section{July 2012} \begin{itemize} \item The \cs{tl_if_head_eq_meaning:nN}, \cs{tl_if_head_eq_catcode:nN} and \cs{tl_if_head_eq_charcode:nN} conditionals now never match when their first argument is empty. \end{itemize} \section{August 2012} \begin{itemize} \item \cs{lua_now:x} is now a standard \texttt{x}-type expansion of \cs{lua_now:n}, which does no expansion. Engine-level expansion is moved to \cs{lua_now_x:n}, reflecting the fact that this is non-standard in the same way as for example \cs{str_if_eq_x:nn(TF)}. \end{itemize} \end{document}