使用 TeXstudio 配置自动完成

使用 TeXstudio 配置自动完成

TeXstudio 的自动完成功能相当不错。例如,当我输入 时\eqref{,它已经提供了建议,请参见下面的示例。

TeXstudio 的自动完成功能非常完美

但是,假设我不想使用,\eqref而是使用自定义命令newcommand(我这样做是为了可以快速切换到不同的样式,例如,对于某些期刊/会议,需要“Eq. (1)”,而有时“(1)”就足够了)。在这种情况下,TeXstudio 不会自动完成,请参见下面的示例。

TeXstudio 不具备自动完成功能

是否可以配置 TeXstudio 使其自动完成需要引用的自定义命令?

请注意,一个选项是\eqref使用重新定义\renewcommand,但我正在寻找另一种方法,以便我可以使用 if 来执行更多命令,而不仅仅是\eqref

这是我的 MWE:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\alternative}[1]{Eq.~(\ref{#1})}

\begin{document}
    \begin{equation}
        \label{eq:emc2}
        E = mc^2
    \end{equation}
    I can refer to the equation using \eqref{eq:emc2} and using \alternative{eq:emc2}.
\end{document}

答案1

为此,您必须使用自定义 .cwl 文件(据我所知,这需要最新版本的 TeXstudio)。

根据您的系统,创建一个文件,例如mycwl.cwl%appdata%\texstudio\completion\user或者。.config/texstudio/completion/user

在其中放置以下行:

\alternative{label}#r

并保存。从技术上讲,您可以在参数中放入任何有意义的内容,但有些术语是保留的,具有特殊含义。并且,由于您希望 TeXstudio 识别那里的标签,因此您需要其中一个,即label。行末的注释告诉 TeXstudio 您的命令是什么类型的。#r代表this command declares a reference like "\ref{key}"。要使用更多命令,只需在您的 中添加新行即可mycwl.cwl

然后,在 TeXstudio 中,转到Options-> Configure TeXstudio->Completion并检查mycwl.cwl列表(至关重要的)就这样。

TeXstudio 中自定义命令的使用

有关使用 cwl 文件自定义自动完成的更多详细信息,请查看TeXstudio 手册,部分“4.13 cwl 格式的描述”。

提示:如果手册看起来很复杂,并且你想模拟你喜欢的某些命令的自动完成行为,你可能需要下载源代码 tarballhttp://texstudio.sourceforge.net/,解压并查看“completion”文件夹中的内置 cwl 文件。从那里,您可以通过您感兴趣的命令示例继续操作。

答案2

我建议使用该cleveref包,而不是为所有可能的标签类型手动定义命令。

  • cleveref将根据您所引用的标签类型自动插入适当的字符串

  • texstudio 自动建议可能的标签

在此处输入图片描述

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\usepackage[capitalise]{cleveref}

\begin{document}
    \begin{equation}
        \label{eq:emc2}
        E = mc^2
    \end{equation}
    I can refer to the equation using \eqref{eq:emc2} and using \cref{eq:emc2}.

\end{document}

相关内容