是否有一个程序可以移动章节并自动调整子章节的级别?

是否有一个程序可以移动章节并自动调整子章节的级别?

如何将 [sub..]section 移动到文档结构中的其他位置?必须根据新的父级更改分段命令。是否有可以执行此操作的程序?通过拖放操作的编辑器?像这样的 cli 调用应该可以完成此操作(假设分段编号为默认):

texsectionmove main.tex 3.2 root

答案1

根据我的理解,None 要求的是类似于目录结构的东西:我们可以以任意方式移动文件夹(部分/子部分……),而 LaTeX 应该知道是否要放置\section\subsection或其他内容。部分解决方案适用于在文档内进行复制和粘贴,即使用类似部分的环境,而不仅仅是宏。

\documentclass{article}

\makeatletter
\newcounter{section@depth}
\setcounter{section@depth}{0}

\newenvironment{deepsection}{%
  \addtocounter{section@depth}{1}%
  \ifcase\c@section@depth 
  \expandafter \part
  \or \expandafter \section
  \or \expandafter \subsection
  \or \expandafter \subsubsection
  \or \expandafter \paragraph
  \or \expandafter \subparagraph
  \else 
  \PackageError{deepsections}{%
    Sections are too deeply nested.%
  }{%
    Trying to recover with \string\subparagraph%
  }%
  \expandafter \subparagraph
  \fi
}{%
  \addtocounter{section@depth}{-1}%
}

\makeatother

\begin{document}
\tableofcontents
\begin{deepsection}{First section's title}  
  This text is inside the first section
  \begin{deepsection}[Short title]{And the title for a subsection}
    Some more text.
    \begin{deepsection}*{Unnumbered subsubsection}
      Yet some more text
    \end{deepsection}
    \begin{deepsection}{Other subsubsection}
      This subsubsection is numbered now.
    \end{deepsection}
  \end{deepsection}
\end{deepsection}

\begin{deepsection}{Anoter topic}
  Text.
\end{deepsection}
\end{document}

此处定义的 deepsection 环境采用与 完全相同的参数\section,并为您选择相关的切片级别。如果您的深度超过应有的深度,它也会发出警告。

答案2

就目前的情况来看,这个问题可能问的是两个不同的问题。一个是:“假设我想将所有部分都变成子部分,并将其他每个结构命令也降低一个级别”这可以通过一些正则表达式来实现,例如使用 sed。这个想法就是找到每个结构命令的所有实例并将其替换为下一个最低的命令。你必须从最底层开始,然后向上。假设你拥有的最低结构命令是\subsubsection,你想将其降低到\paragraph。因此,在终端中运行以下每行:

sed s/'\\subsubsection{'/'\\paragraph{'/ file.tex
sed s/'\\subsection{'/'\\subsubsection{'/ file.tex

等等。显然,通过使用一个脚本运行所有这些操作可以大大改善这种情况,等等,但您明白我的意思了。

这个问题可能要问的另一件事是“我想在文档中移动一整段文本并更改其级别。这并不容易。emacs auctex 模式有一个用于标记整个部分的命令:C-c *然后您可以C-w像往常一样使用它。自动让部分更改其部分级别更难,但不清楚它是否有用。有时您希望在移动某个部分时将其保留为一个部分,有时您希望它成为一个子部分。所以最好手动完成。使用 emacs reftex,您可以通过移动到 reftex 菜单中感兴趣的部分并使用 C-< 或 C-> 分别向上或向下移动一个级别来执行此操作。

答案3

您可以轻松地在 Lyx 中移动、降级或提升包含章节和子章节的选择。快捷方式是 Alt-P,然后按箭头键之一 - 左和右提升或降级以及上下移动选择。

答案4

我对原始问题的理解是:如何将 A 节转换为章节,并同时自动将 A 节的所有子节转换为节,将所有子子节转换为子节等

TexmakerX这应该是可能的,但我承认我还没有尝试过:

在以树的形式显示文档各部分的结构视图中,您可以使用上下文菜单来缩进或取消缩进某个部分(据我所知),该部分还应“移动”该部分的所有子部分 1 级向上或向下。

相关内容