Desejo algum tipo de sistema fácil para manipular "seções" ou ambientes com base em dados adicionais, como datas. Fiz uma pesquisa preliminar no Google e não consegui encontrar nada porque não consigo colocar em palavras, mas vou tentar o meu melhor para formar um exemplo. Não tenho certeza se o LaTeX permite isso em geral, pois só posso compará-lo ao bibtex.
Quero poder ter "entradas" ou "seções" muito parecidas com o estilo de um diário que tenha um argumento para uma "data" ou algum outro critério pelo qual possam ser classificadas. Algum pseudocódigo:
\begin{entry}{1928}{3}{28}
This is an entry.
\end{entry}
\begin{entry}{1777}{4}{30}
This is another entry, but dated before the last one.
\end{entry}
O objetivo seria então ter --- quando compilar --- as entradas seriam automaticamente classificadas por data. Ou seja, a segunda entrada (como aparece no código) apareceria antes da primeira.
Existe alguma biblioteca ou algo que possa ajudar a realizar essa tarefa? É mais ou menos como o bibtex classifica apesar da ordem do código. Qualquer coisa próxima disso também é apreciada, seja por meio de seccionamento ou de ambientes. O objetivo é classificar por algum tipo de “tag”, como uma data. Qualquer conselho é apreciado, obrigado!
Responder1
Para reordenar algumas seções semelhantes, eu criaria subdocumentos como 19280328.tex
, 17770430.tex
, etc., e depois inseriria em um documento principal com
\input{19280328}
\input{17770430}
...
Então, qualquer bom editor pode resumir isso rapidamente na ordem correta
No caso de pequenas entradas serem mostradas como um ambiente tipo descrição, uma opção poderia ser o pacote nomencl
:
\documentclass{article}
\usepackage{nomencl}
\makenomenclature
\def\nomname{Cronology}
\begin{document}
\nomenclature{1928/03/28}{This is an entry.}
\nomenclature{1777/04/30}{This is another entry, but dated before the last one.}
\settowidth{\nomlabelwidth}{0000/00/00xx}
\printnomenclature
\end{document}
Observe que uma vez salvo este arquivo, dito para test.tex,
compilá-lo, você deve executar:
pdflatex test.tex
makeindex test.nlo -s nomencl.ist -o test.nls
pdflatex test.tex
pdflatex test.tex # really not needed for this simple example
Responder2
Você pode usardatatool
para armazenar, classificar e imprimir seus lançamentos contábeis manuais.
Como você está usando uma representação sensata AAAA-MM-DD para as datas, combinei-as em um único campo chamado date
dentro do journal
banco de dados. A classificação é obtida usando \DTLsort{date}{journal}
, após a qual a impressão é feita percorrendo o banco de dados usando \DTLforeach
.
\documentclass{article}
\usepackage{datatool,environ}
\dtlexpandnewvalue
\NewEnviron{entry}[1]{%
\DTLnewrow{journal}% Add new row to database
\DTLnewdbentry{journal}{date}{#1}% Add date entry
\DTLnewdbentry{journal}{entry}{\BODY}% Add entry body
}
\DTLnewdb{journal}
\newcommand{\printentries}{%
\section*{Journal}
\DTLsort{date}{journal}%
\DTLforeach{journal}{%
\entrydate=date,
\entrybody=entry%
}{%
\subsection*{\entrydate}
\entrybody
}
}
\begin{document}
\begin{entry}{2018-01-02}
This is an entry.
\end{entry}
\begin{entry}{2017-01-05}
This is another entry.
\end{entry}
\printentries
\end{document}
Observe que se as entradas contiverem parágrafos, você terá que usar \DTLpar
em vez de linhas/quebras de linha vazias. Como um exemplo,
\begin{entry}{1234-56-78}
First paragraph.
\DTLpar
Second paragraph.
\end{entry}