목록에 사용할 계산된 명령(예: TODO)을 어떻게 생성합니까?

목록에 사용할 계산된 명령(예: TODO)을 어떻게 생성합니까?

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}.

할 일 메모는 인라인 텍스트에 색상이 지정되거나 접두사가 붙거나 다른 방식으로 표시됩니다. 그런 다음 호출하면 문서에 s \listoftodos의 목록이 생성되고 와 유사하지만 별도의 (하이퍼링크) 목록이 생성됩니다 . 여기서 의 내용은 있는 경우에만 오른쪽에 페이지 번호가 있는 의 내용으로 대체됩니다 . 이 목록에는 단일 수준의 깊이만 필요합니다.\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}

관련 정보