![如何在todonotes中使用markdown?](https://linux22.com/image/443254/%E5%A6%82%E4%BD%95%E5%9C%A8todonotes%E4%B8%AD%E4%BD%BF%E7%94%A8markdown%EF%BC%9F.png)
我使用 todonotes,尤其是在协调大型项目时。特别是在起草和快速集思广益阶段,我希望能够在 todonotes 中使用 markdown,这样就不必浪费时间嵌套 itemize 等。
遗憾的是,我似乎无法让它工作:我多次尝试将 markdown 环境放入 todonote 中,如下所示
\todo[...]{\begin{markdown}...\end{markdown}}
失败并出现许多错误(大多数似乎是失控参数),听起来像这样:
Argument of ^^M has an extra }.
有什么想法/帮助/指点吗?
麦格维:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{markdown}
\usepackage{todonotes}
\begin{document}
% normal markdown works:
\begin{markdown}
* woah
* bullets
\end{markdown}
% todonotes work
\todo[inline,prepend,caption={WOAH}]{yay}
% todonotes with itemize work
\todo[inline,prepend,caption={WOAH}]{yay
\begin{itemize}
\item woah
\item complicated bullets
\end{itemize}
}
% todonotes with markdown break
\todo[inline,prepend,caption={WOAH}]{nay
\begin{markdown}
* woah
* bullets easy
* boom
\end{markdown}
}
\end{document}
答案1
在这种情况下,markdown
是一个逐字环境,因此它不能在大多数命令的参数中使用。
看https://texfaq.org/FAQ-verbwithin更多细节。
无需更改太多代码即可进行修复cprotect
。请注意 周围的额外括号组\todo[inline,prepend,caption={WOAH}]
。
\documentclass{article}
\usepackage{markdown}
\usepackage{todonotes}
\usepackage{cprotect}
\begin{document}
\cprotect{\todo[inline,prepend,caption={WOAH}]}{nay
\begin{markdown}
* woah
* bullets easy
* boom
\end{markdown}
}
\end{document}
有关解释,请参阅包的文档cprotect
。
请注意,这\cprotect[om]\todo[inline, ...]{nay ...}
不起作用,因为可选参数必须不是受到保护(保护的具体含义相当复杂,请参阅我的答案更多细节。)
或者也可以\todo
像这样重新定义
\NewCommandCopy\oldtodo\todo
\outer\def\todo[#1]{\icprotect{\oldtodo[#1]}}
- 请参阅
cprotect
文档以了解为何icprotect
应使用。 \NewCommandCopy
是必需的,因为内部\todo
使用某种机制来保护它(防止它在仅扩展上下文中被扩展)。
答案2
避免使用 markdown 的另一种方法。并不是说 markdown 是需要避免的,我建议用户202729 的回答,而只是为了展示一些包。
下面将内联 todonotes 显示为tcolorbox
。 tcolorbox 内部是一个easylist
,它为类似于 markdown 的(嵌套)列表提供了简单的语法。示例中还有一个原始链接、一个带标签的链接和一些代码。
可以通过将 tcolorbox 环境重新定义为包中的注释环境来“禁用”它们verbatim
。
itemize
通过将样式的定义复制easylist
到序言中作为默认设置,文档内部列表的语法会简化一些(否则会是\begin{easylist}[itemize]
)。其他元素(链接和代码)的语法也应该相对简单且输入速度快。
梅威瑟:
\documentclass{article}
\usepackage[at]{easylist}
% set itemize style as default
\ListProperties(Hang=true,Space=4pt,Space*=4pt,Hide=1000,%
Margin1=1.5em,Style1*=\textbullet\hskip .5em,%
Margin2=3.7em,Style2*=--\hskip .5em,%
Margin3=5.9em,Style3*=$\ast$\hskip .5em,%
Margin4=7.8em,Style4*=$\cdot$\hskip .5em)%
\usepackage{tcolorbox}
\usepackage{hyperref}
\usepackage{verbatim} % for switching off tcolorbox
\tcbset{
colback=red!5!white,
colframe=red!75!black,
}
% uncomment the next line to disable tcolorbox
%\renewenvironment{tcolorbox}{\comment}{\endcomment}
\begin{document}
Some text
\begin{tcolorbox}[title=WOAH]
\begin{easylist}
@ item 1
@ item2
@@ nested item
@ item3
\end{easylist}
\url{https://tex.stackexchange.com}\\
\href{https://tex.stackexchange.com}{TeX.SE}\\
\verb+return "@#$%^&"+
\end{tcolorbox}
More text
\end{document}
结果: