使用 TeXstudio 的代码折叠特定环境?

使用 TeXstudio 的代码折叠特定环境?

使用 TeXstudio,可以折叠代码段。左侧会出现小箭头标记,单击即可折叠代码段。以下是示例。

在此处输入图片描述

然后点击\begin{figure}

在此处输入图片描述

我的问题是,有没有办法figure一键折叠所有环境。假设我有一个包含 30 个figure环境的文档,我希望能够一键折叠所有环境,而不必手动单击每一行上的这个箭头\begin{figure}

我觉得 TeXstudio 可能可以实现这一点,因为它已经具有一些类似的功能,只需单击一下即可折叠内容。这在“查看”下拉菜单中。如果我单击“所有内容”,则所有内容都会折叠起来\begin{document}。但我不知道 1、2、3、4 级是什么?我正在寻找一种方法,让“图形”在这里,我可以单击它,然后所有代码figures都会折叠起来。这可能吗?

在此处输入图片描述

答案1

您可以使用用户宏来实现这一点。在 下Macros -> Edit Macros添加以下内容:

%SCRIPT
var tl = editor.document().textLines();
var regEx = /\\begin{figure}/;
var match

for (var i=0;i<tl.length;i++){
    match = regEx.exec(tl[i]);
    if (match) {
        editor.document().foldBlockAt(false,i+1)
    }
}

测试文档

\documentclass{report}

\begin{document} % Level 1
    \chapter{A} % Level 2
    Test text.
    \begin{figure} % Level 3
        \includegraphics{example-image}
    \end{figure}

    \section{B} % Level 3
    Test text.

    \subsection{C} % Level 4
    Test text.
    \begin{figure}
        \includegraphics{example-image}
    \end{figure}

    \section{D}
    Test text.
    \begin{figure}
        \includegraphics{example-image}
    \end{figure}

    \subsection{E}
    Test text.

    \chapter{F}
    Test text.
    \begin{figure}
        \includegraphics{example-image}
    \end{figure}

    \section{G}
    Test text.

    \section{H}
    Test text.

    \subsection{I}
    Test text.

    \paragraph{J}
    Test text.
    \begin{figure}
        \includegraphics{example-image}
    \end{figure}

    \chapter{K}
    Test text.

\end{document}

请注意,执行宏后,每个块中标题为\chapter等尚未折叠的 (仍然可见)。\sectionAKTest text

动态图片

动态图

** 如果您expand figures也想要宏,请将editor.document().foldBlockAt(false,i+1)上面的脚本替换为editor.document().expandParents(i+1),然后将其保存为单独的宏。


至于Level 1toLevel 4块,我尝试使用上面的测试文档来说明这一点(参见注释)。基本上,它不是 等的固定映射Level 1 -> ChapterLevel 2 -> Section

  • Level 1只是 TeXstudio 遇到的第一个可以折叠的块,并且该块还不是另一个块的子块。在大多数情况下,这是命令\begin{document}
  • Level 2块嵌套在Level 1块中,通常\chapter\section取决于文档类,但不会嵌套在其他块中。

等等。

但是您可以从我示例中的第一个图形环境中看到,该环境嵌套在\chapter块中,被认为是同一水平作为\section块,因为它们都嵌套在内\chapter


附录

  • 您希望将其添加到Collapse子菜单下,但由于您可以通过键盘快捷键(默认情况下为Shift+F1等)更快地激活这些宏,因此我认为没有必要在我的回答中这样做。一般来说,这是可能的,我最终可能会回来这样做,只是为了好玩。

  • 另一种可能性是将collapse和组合expand成一个宏,并使其像toggle comment快捷方式(Ctrl+ T)一样操作,这也很有趣。

相关内容