%20%D0%B4%D0%BB%D1%8F%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%B2%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B5%3F.png)
Предлог: Я знаю о таких пакетах, как todonotes
, todo
и fixme
, но это скорее задача для изучения программирования LaTeX. Поэтому использование дополнительных пакетов, загруженных с CTAN, не рекомендуется. Хотелось бы также избегать использования дополнительных файлов *.sty.
Как создать команду в основном *.tex для последующего отображения подсчитанного элемента в списке?Например:
Text before\todo[optional caption]{my text here}.
Some other text in the document\todo{another todo but without caption}.
Заметка todo будет окрашена, снабжена префиксом или иным образом помечена в тексте. Вызов \listoftodos
затем создаст список s \todo
в документе и сгенерирует (гиперссылочный) список, аналогичный , но отдельный от \tableofcontents
, где содержимое в {}
будет заменено тем, что в , []
если и только если оно присутствует, с номером страницы справа. Для этого списка потребуется только один уровень глубины.
Просматривал исходный код пакета todonotes
, но не смог извлечь из него много смысла. Насколько я могу судить, эта задача потребует определения двух новых команд, сохранения текстов в списке задач, обработки необязательных аргументов и, наконец, создания списка задач с ссылками, используя hyperref
в (другой) таблице содержания. Список будет записан в файл *.aux.
Бонус:
Безопасность, которая должна использоваться в заголовке уравнения или раздела, безопасность, которая должна иметь форматирование или уравнение в примечании
Как можно добавить параметры?
\listoftodos
Было бы неплохо иметь простую опцию отображения или скрытия встроенного текста (при этом он все равно будет отображаться в ).Можно ли расширить этот метод для других предметов?
\myitem
,\listofmyitems
,\otheritems
,\listofotheritems
?
Дополнение: есть ли в сети продвинутое руководство по программированию (La)TeX? Это будет полезно для любых будущих начинаний.
решение1
Предварительная версия, без дополнительных ключей
\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}