【问题标题】:Is there a way to make a LaTeX environment where indentation is interpreted as itemize levels?有没有办法制作一个将缩进解释为逐项级别的 LaTeX 环境?
【发布时间】:2010-08-14 12:55:45
【问题描述】:

尽管我很喜欢 LaTeX,但我发现逐项列出和枚举环境总是需要 (1) 开始/结束环境声明语句,以及 (2) 在每个之前的“\item”命令,这很烦人(并且在视觉上很嘈杂)项目。

我希望拥有(或能够创造)某种“自动排列”的环境,比如

\begin{autoitemize}
  first item
  second item
    nested item
    another nested item
  third item
\end{autoitemize}

会自动翻译成:

\begin{itemize}
  \item first item
  \item second item
  \begin{itemize}
    \item nested item
    \item another nested item
  \end{itemize}
  \item third item
\end{itemize}

所以问题是:有没有办法使用 LaTeX 包而不是使用外部预处理器来做到这一点?

如果能够在项目行上有某种可选的行前缀来指示项目及其后继者所处的列表环境类型,这也可能会很好——这将允许将一种类型嵌套在另一种类型中.

当然,这可能不如普通的 LaTeX 方式那么强大,但在很多情况下它就足够了,而且非常方便。

【问题讨论】:

标签: latex


【解决方案1】:

这就是 Markdown 和重组文本 (RST) 的用途。当你问这个问题时,你并不是真的在谈论 LaTeX。您问的是另一种标记语言。

您可以从 RST 轻松生成 LaTeX 用于发布目的。

http://docutils.sourceforge.net/rst.html

【讨论】:

  • RST 适用于各种文档,但它缺乏可用于 LaTeX 的包的功能和范围——它确实可以导出到 LaTeX,但我真的更愿意保留所有内容 LaTeX 源文件中。某种自动 ReST 到 LaTeX 内联转换是可以的,但我不知道这样的事情。
  • 我一直使用自动 RST 到 LaTeX。并且内联转换得非常好。 rst2latex.py 带有 docutils 并且工作得非常好。我不确定你不能做什么,但我绝对确定它会生成非常好的 LaTeX 并大大简化了我的生活。
  • 更新:我在之前的评论中说过“我不知道这样的事情”。好吧,现在我是:Pweave (bitbucket.org/edgimar/pweave/src)——这基本上允许在文本文件中包含和自动预处理/替换任何类型的内联块(例如,可以将 rst2latex.py 与 Pweave 结合使用来自动进行内联替换LaTeX 文档中的第一个)。
  • @Mark:“我真的希望将所有内容都保存在 LaTeX 源文件中”对我来说没有意义,因为您显示的内容实际上并不是 LaTeX。让“LaTeX 内”文件让我非常困惑。
  • 是的,这是正确的——它不是纯 LaTeX,因为它可以直接用 pdflatex/etc 编译。从技术上讲,使用自定义样式文件编写这样的文件是可行的,但是必须以 write18 模式运行 pdflatex,这对于可移植的 LaTeX 源文件并不理想(可移植意味着需要最少的特殊依赖项/标志)。使用 pweave,可执行文件和处理器插件可以很容易地与源文件捆绑在一起,使其相对便携。
【解决方案2】:

Emacs Org mode 可能允许你做这样的事情。它有一定的翻译成 LaTeX 的能力。

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2013-10-18
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    相关资源
    最近更新 更多