TeXstudio 的自动完成功能相当不错。例如,当我输入 时\eqref{
,它已经提供了建议,请参见下面的示例。
但是,假设我不想使用,\eqref
而是使用自定义命令newcommand
(我这样做是为了可以快速切换到不同的样式,例如,对于某些期刊/会议,需要“Eq. (1)”,而有时“(1)”就足够了)。在这种情况下,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
列表(至关重要的)就这样。
有关使用 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}