如何用 \md{...} 替换 \begin{markdown}...\end{markdown}?

如何用 \md{...} 替换 \begin{markdown}...\end{markdown}?

我正在尝试用该\begin{markdown}...\end{markdown}习语替换它以\markdown{...}节省一些击键,但是我收到了“失控参数”错误并且没有 PDF。

以下是 MWE:

\documentclass{article}

\usepackage{markdown}
\newcommand\md[1]{\begin{markdown}#1\end{markdown}}

\title{markdown test}
\author{Goo Bar}
\date{May 2023}

\begin{document}

\maketitle

\section{Introduction}

\begin{markdown}
Hello world
\end{markdown}

\md{Goodbye world}

\end{document}

markdown用替换abstract效果很好,所以这个想法应该在实践中可行。我在markdown包装中缺少什么?

答案1

你不能:\begin{markdown}设置事物以便

  • 修改了部分类别代码;
  • 一行一行地处理;
  • 处理停止时细绳 \end{markdown}被扫描。

您肯定知道,前导空格和尾随空格在 Markdown 中很重要,但它们对 TeX 来说并不重要:在标准设置下,输入行中的前导空格将被忽略,尾随空格将被丢弃并替换为\endlinechar。因此在环境中markdown必须更改有关空格的标准设置。

如果你

\newcommand{\md}[1]{\begin{markdown}#1\end{markdown}}

以上三点都无法挽救,因为当 TeX 吸收参数时,它会修复类别代码,并且不再具有参数中可能出现的结束行的概念。好吧,有一些技巧可以帮助获得一个有点功能的命令版本的环境,但现在考虑一下:你能看到

\md{You can't: `\begin{markdown}` sets up things so that

* some category code are changed;
* lines are processed one by one;
* processing is stopped when the ***string*** `\end{markdown}` is scanned.

}

超过

\begin{markdown}
You can't: `\begin{markdown}` sets up things so that

* some category code are changed;
* lines are processed one by one;
* processing is stopped when the ***string*** `\end{markdown}` is scanned.
\end{markdown}

如果输入的时间较长?

相关内容