如何将一个文档编译成两个不同顺序的部分?

如何将一个文档编译成两个不同顺序的部分?

我想设置一个按两种不同顺序编写的日记:一种是按天工作,另一种是按项目工作,根据我为每天所做的特定工作块赋予的标签。

例如,我像往常一样以工作日形式写日记:

2/2/15

-- bought a new screwdriver (tag: car maintainence) 

-- scetched my plan for world domination (tag: world domination)

3/4/15

-- started studying physics (tag: world domination)

-- finished tax declaraction (tag: burocracy)

按项目编译将产生以下部分标签:

car maintainence  

-- 2/2/15: bought a new screwdriver

world domination

-- 2/2/15: scetched my plan for world domination

-- 3/4/15: started studying physics

burocracy

-- 3/4/15: finished tax declaraction

我知道这非常接近整个 LaTex 文档所遵循的文字编程范式:文档中的代码块可以编译为两种不同的顺序:供人类理解和供机器使用。但是,我想要两个人类可读的版本(例如 pdf 文件)作为输出。有没有什么软件包可以提供帮助?

答案1

这是一个解决方案。我只用了 2 个标签,但你可以添加更多

\documentclass{article}

\newif\ifbytag

%-------------- here we make the chice by tag or by date (if false)
\bytagtrue
%\bytagfalse

\newcommand{\cartag}{car maintainence} % may one add formatting : bold, space ...
\newcommand{\worldtag}{world domination} % may one add formatting

\makeatletter
\ifbytag
\newcommand{\mtdate}[1]{%
\g@addto@macro\cartag{\par #1}%
\g@addto@macro\worldtag{\par #1}}
\newcommand{\mtcar}[1]{%
\g@addto@macro\cartag{\par -- #1}}
\newcommand{\mtworld}[1]{%
\g@addto@macro\worldtag{\par -- #1}}
\else
\newcommand{\mtdate}[1]{\par #1}
\newcommand{\mtcar}[1]{\par -- #1 (tag: car maintainence)}
\newcommand{\mtworld}[1]{\par -- #1 (tag: world domination)}
\let\cartag\empty\let\worldtag\empty
\fi
\makeatother

\begin{document}

\mtdate{2/2/15}

\mtcar{bought a new  screwdriver} 

\mtworld{scetched my plan for world domination}

\mtdate{3/4/15}

\mtworld{started studying physics}

\mtcar{finished tax declaraction}

%--------------------------here we print tages if by tag
\cartag

\worldtag
\end{document}

相关内容