%20para%20uso%20em%20uma%20lista%3F.png)
Pretexto: conheço pacotes como todonotes
, todo
, e fixme
, mas esta é mais uma tarefa para aprender programação LaTeX. Portanto, o uso de pacotes adicionais baixados do CTAN é desencorajado. Também gostaria de evitar o uso de arquivos *.sty adicionais.
Como criar um comando no *.tex principal para que um item contado seja posteriormente exibido em uma listagem?Por exemplo:
Text before\todo[optional caption]{my text here}.
Some other text in the document\todo{another todo but without caption}.
A nota de tarefa será colorida, prefixada ou marcada de outra forma no texto embutido. A chamada \listoftodos
criará então uma lista dos \todo
s no documento e gerará uma lista (com hiperlink) semelhante, mas separada de \tableofcontents
, onde o conteúdo em {}
será substituído por aquele em []
se e somente se estiver presente, com o número da página à direita. Esta lista precisará apenas de um único nível de profundidade.
Estava procurando o código-fonte do todonotes
pacote, mas não consegui entendê-lo muito. Pelo que sei, esta tarefa exigirá a definição de dois novos comandos, o armazenamento dos textos em uma lista de todos, o tratamento de argumentos opcionais e, finalmente, a criação de uma lista referenciada de todos usando hyperref
em um (outro) índice. A lista será gravada no arquivo *.aux.
Bônus:
Segurança para ser usada dentro de uma equação ou cabeçalho de seção, segurança para ter formatação ou uma equação dentro da nota
Como as opções podem ser adicionadas? Uma opção simples de mostrar ou ocultar o texto embutido (embora ainda seja exibido no arquivo
\listoftodos
) seria legal.Este método pode ser estendido para outros itens?
\myitem
,\listofmyitems
,\otheritems
,\listofotheritems
?
Adendo: existe algum guia avançado online para programação de (La)TeX? Isso será útil para quaisquer empreendimentos futuros.
Responder1
Uma versão preliminar, sem teclas de opção
\documentclass{article}
\usepackage[x11names]{xcolor}
\usepackage{etoolbox}%
\usepackage{blindtext}% Just as text filler
\usepackage{hyperref}
\makeatletter
\def\todolist{}
\newcounter{todolistcounter}
\newcommand{\ToDo}{%
\@ifnextchar[{\todoopt}{\todonoopt}%
}%
\newcommand{\todonoopt}[1]{%
\refstepcounter{todolistcounter}
% \addcontentsline{todo}{section}{\thetodolistcounter~#1} % No contents line
\listgadd{\todolist}{#1}%
#1%
% \colorbox{green}{\thetodolistcounter~#1}
}
\newcommand{\todoopt}[2][]{%
\refstepcounter{todolistcounter}
\addcontentsline{todo}{section}{\thetodolistcounter~#1}
\listgadd{\todolist}{#2}%
#2%
% \colorbox{green}{\thetodolistcounter~#2}
}%
\newcommand{\listoftodos}{%
\section{List of Todos}
\@starttoc{todo}
\clearpage
}%
% inline display (as a enumerate) list
\newcommand{\InTextListOfToDos}{%
\begin{enumerate}%
\renewcommand*{\do}[1]{%
\item ##1%
}
\dolistloop{\todolist}%
\end{enumerate}%
}
\makeatother
\begin{document}
\listoftodos
\ToDo{first} \ToDo{We}
\blindtext[5] \ToDo[should not]{should} \blindtext[10]\ToDo{start from scratch}
\ToDo{\begin{equation}
E = mc^2%
\end{equation}%
}
\blindtext
\section{The ToDos}
\section{A heading with a ToDo \protect\ToDo{Something}}
\InTextListOfToDos
\end{document}