% (The MIT License)
%
% Copyright (c) 2021-2022 Yegor Bugayenko
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the 'Software'), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.

\documentclass[12pt]{article}
\usepackage[trace]{iexec}
\usepackage[tt=false,type1=true]{libertine}
\usepackage{multicol}
\usepackage{ffcode}
\title{\ff{iexec}: \LaTeX{} Package \\ for Inputable Shell Executions}
\author{Yegor Bugayenko}
\date{0.5.1 2022/01/09}
\begin{document}
\pagenumbering{gobble}
\raggedbottom
\setlength{\parindent}{0pt}
\setlength{\columnsep}{32pt}
\setlength{\parskip}{6pt}
\maketitle

This package helps you execute shell commands right from the
document and then put their output to the document:

\begin{multicols}{2}
\setlength{\parskip}{0pt}
\scriptsize
\raggedcolumns
\begin{ffcode}
\documentclass{article}
\usepackage{iexec}
\begin{document}
Today is \iexec{date +\%e-\%b-\%Y}
\end{document}
\end{ffcode}

\columnbreak

Today is \iexec{date +\%e-\%b-\%Y | tr -d '\\n'}
\end{multicols}

You have to run \ff{pdflatex} (or just \ff{latex}) with the \ff{--shell-escape} flag
in order to let \ff{shellesc} (the package we use) to run shell.

If you don't want the output to be visible,
use \ff{\char`\\phantom\char`\{\char`\\iexec\char`\{...\char`\}\char`\}}.

The output of your code is saved into the file provided as the
second optional argument of \ff{\char`\\iexec} (the default value is \ff{iexec.tmp}):

\begin{ffcode}
Today is \iexec[stdout=date.txt]{date +\%e-\%b-\%Y | tr -d '\\n'}.
\end{ffcode}

The tailing part of the command here removes all ends-of-line.

The file specified will be deleted right after its usage. If you don't
want this to happen, use \ff{trace} package option: all files will remain
in the directory.

There are a few options you can provide for the \ff{\char`\\iexec} command:

\begin{itemize}
    \item \ff{trace}: to prevent the deletion of the file;
    \item \ff{stdout=...}: to set the name of the file where the standard output of the command will be saved;
    \item \ff{quiet}: to prevent including of the content into the document.
\end{itemize}

More details about this package you can find
in the \ff{yegor256/iexec} GitHub repository.

\end{document}