Árvore de diretórios de impressão e conteúdo de arquivos de script muito
Editar : versão mais recente com tabela completa de conteúdo como suporte a árvore e imagem, na segunda parte.
Usando \verbatiminput
do pacote verbatim .
Assim:
#!/bin/bash
tempfile=$(mktemp /tmp/dirtree-XXXXX.tex)
trap "rm $tempfile" 0 1 2 3 6 9 15
cat <<EOF >$tempfile
\documentclass[11pt,a4paper,oneside]{article}
\usepackage{fullpage,verbatim,dirtree}
\begin{document}
\section{Listing}
\dirtree{%
EOF
export -a scriptList=()
while IFS=/ read -a fPath ;do
file="${fPath[*]:${#fPath[*]}-1}"
IFS=/
full="${fPath[*]}"
type="$(file -b "$full")"
echo .${#fPath[@]} "${file//_/\_}\DTcomment{$type}. "
[[ "$type" =~ script.text ]] && scriptList=("${scriptList[@]}" "$full")
done < <(
find $1 -type d -o -type f
) >>$tempfile
export IFS=$'\n\t '
echo "}" >>$tempfile
for file in "${scriptList[@]}";do
name="${file##*/}"
printf "\section{%s}\n{\\scriptsize\\verbatiminput{%s}}\n" \
"${name//_/\_}" "${file}" >>"${tempfile}"
done
echo >>"${tempfile}" '\end{document}'
pdflatex -interaction nonstopmode "${tempfile}"
Quem produziria esse tipo de saída:
Árvoredediretóriosdeimpressãobonitacomtabeladeconteúdo,scriptsearquivosdeimagens.
NOTA:Paracomputartoc,latex
temqueserexecutadoduasvezes.
bugs:
Estescriptéapenasumaprovadeconceito,otipodeimagenséprovavelmentelimitadoepodesermelhorado,eventualmentecomaajudadeimagemagik,netpbmouqualquerlibgráfico...eassimpordiante
todo:
- corrigirdimensõesdeimagens
- melhorarafiltragemdeimagens
- adicionesuporteparapdf,psetalvezoutrosimprimíveis,como.man,.tex,.sgml,.odf
- adicionaropçãoparaimprimiraprimeirapáginadosarquivosdedocumentos.
- crieeelimineficheirostemporáriosdeformamaisadequada.
Láestá:
#!/bin/bashtempfile=$(mktemp/tmp/dirtree-XXXXX.tex)#trap"rm $tempfile" 0 1 2 3 6 9 15
cat <<EOF >$tempfile
\documentclass[11pt,a4paper,oneside]{article}
\usepackage{fullpage,graphicx,verbatim,dirtree}
\makeatletter
\newcommand{\typePPage}[2]{\DTcomment{{\scriptsize #1
\begin{minipage}[t]{5em}\mbox{}\hfill\ifx\@empty#2\else%
s.$\ref{sec:#2}$, p.$\pageref{sec:#2}$\fi\end{minipage}}}}
\makeatother
\begin{document}\parindent=0pt%
\section{Listing}
\dirtree{%
EOF
export -a scriptList=()
export -A typelist=()
while IFS=/ read -a fPath ;do
file="${fPath[*]:${#fPath[*]}-1}"
IFS=/
full="${fPath[*]}"
type="$(file -b "$full")"
if [[ "$type" =~ script.text ]] || [[ "$type" =~ image ]] ;then
scriptList=("${scriptList[@]}" "$full")
typelist["${full//\//_}"]="$type"
echo .${#fPath[@]} \
"${file//_/\_}\typePPage{$type}{${file//[\/.+()_-]/}}. "
else
echo .${#fPath[@]} "${file//_/\_}\typePPage{$type}{}. "
fi
done < <(
find $1 -type d -o -type f
) >>$tempfile
export IFS=$'\n\t '
echo "}" >>$tempfile
for file in "${scriptList[@]}";do
name="${file##*/}"
printf '\section{%s}\n\label{sec:%s}\n' \
"${name//_/\_}" "${name//[\/.+()_-]/}"
if [[ "${typelist["${file//\//_}"]}" =~ script.text ]];then
printf '{\scriptsize\verbatiminput{%s}}\n' "${file}"
else
printf '\includegraphics[width=\textwidth]{%s}\n' "${file}"
fi
done >>"${tempfile}"
echo >>"${tempfile}" '\end{document}'
pdflatex -interaction nonstopmode "${tempfile}" >/dev/null 2>&1
pdflatex -interaction nonstopmode "${tempfile}"
Pode produzir: