在 WinEdt 中收集物品

在 WinEdt 中收集物品

我已经定义了自己的命令

\newcommand{\mysection}[2]{%
\clearpage%
\section{#1}\label{#2}%
}

我使用如下示例

\documentclass{article}

\newcommand{\mysection}[2]{%
\clearpage%
\section{#1}\label{#2}%
}

\begin{document}

\tableofcontents

\mysection{A section}{sec:first}

A reference to section~\ref{sec:second}.

\mysection{Another section}{sec:second}

A reference to section~\ref{sec:first}.

\end{document} 

我已经能够让 WinEdt 识别我的命令为\section,并且感谢 Karl Koeller 对这个问题的回答:通过宏生成标签并丢失 \ref{},让 WinEdt 收集与此命令相关的标签。

现在的问题是 WinEdt 看到

\section{#1}

作为一个\section

\label{#2}

并将\label它们作为此类进行收集。

使用上述代码后,我的文档结构在 WinEdt 的树中的样子如下:

在此处输入图片描述

有什么解决方法可以让 WinEdt 丢弃该#1部分和#2标签?

答案1

更新(2017-02-14)

如果您升级到 WinEdt 10.2,则不再需要此答案中描述的解决方法。

\newcommandWinEdt 10.2 认为、\newenvironment和里面的所有内容\NewDocumentCommand都类似“逐字”东西,即它们里面没有任何东西被收集在其 Tree 和 Gather 接口中,并且它不用于折叠目的。


原始答案

\section这可以通过解析分段命令(如)和标记命令(如)的参数来实现\label。仅这两个命令相当简单,但要获得全局解决方案,则需要完全重写 WinEdt 的一些配置文件。

所以,我想出了一个不同的解决方案。我们可以定义一个“虚拟高亮环境”,让 WinEdt 认为我们处于逐字环境中,并丢弃其中收集的内容。

“虚拟环境”以注释开头

% BEGIN-NO-GATHER

并以评论结尾

% END-NO-GATHER

您需要在 WinEdt 中执行以下操作:

  1. 显示“选项界面”(选项 -> 选项界面)

    在此处输入图片描述

  2. 在“选项界面”中,双击“开关”项(Switches.ini打开)

  3. 找到这条线

    SWITCH="% TeX Comment"
    

    而且,只是(这很重要!)在其中插入以下行

    SWITCH="Don't gather"
      ENABLED=1
      MODE_FILTER="TeX|INS;STY;AUX"
      START="%"
      STOP="%"
      HIGHLIGHT_START=1
      STEP_OVER_STOP=1
      HIGHLIGHT_STOP=1
      SCOPE=4
      DOMINANT_PRIORITY=0
      STRICT_PRIORITY=0
      PRIORITY=5
      INDENTED=0
      BOLN_ONLY=0
      CASE_SENSITIVE=1
      VERBATIM=1
      START1_TRIGGER=""
      START2_TRIGGER=" BEGIN-NO-GATHER"
      STOP1_TRIGGER=""
      STOP2_TRIGGER=" END-NO-GATHER"
        TEXT_COLOR="xclComment"
        DEFAULT_FONT=1
    
  4. 按下Shift+Ctrl+F9即可重新加载文件。


现在,只需将所需的代码括到上面两个注释中,即可得到所需的结果。

例如,使用以下代码

\documentclass{article}

% BEGIN-NO-GATHER
\newcommand{\mysection}[2]{%
\clearpage%
\section{#1}\label{#2}%
}
% END-NO-GATHER

\begin{document}

\tableofcontents

\section{A section}\label{sec:first}

A reference to section~\ref{sec:second}.

\section{Another section}\label{sec:second}

A reference to section~\ref{sec:first}.

\end{document} 

您将在 Tree 界面中获得以下结果

在此处输入图片描述

我已经尽可能地对其进行了测试,并且可以说它在这种简单的情况下可以毫无问题地运行,但我不能保证在非常特殊的情况下它不会破坏 WinEdt 的突出显示算法,所以请小心使用它...

相关内容