修改宏中的参数

修改宏中的参数

我需要修改宏的一个参数。
例如#4等于1.1 Optimal solution of RNASP

当我写入时Figure #4,输出如下:
图 1.1 RNASP 的最优解

但我需要这个:
图 1.1:RNASP 的最优解

我想我需要一些文本操作,例如:

  • 将文本拆分为两部分。图号和文本。
  • 在第一部分的开头添加“Figure”字样,在第一部分的结尾添加“:”
  • 将第一部分设为粗体
  • 合并第一部分和第二部分并设置为新变量以在宏中使用

宏:

\def\@mymacro#1#2#3#4#5{
  ...
  \vskip 2cm
  Figure #4
  ...
}

编辑:我发现,例如在一个实例中#4等于以下字符串。我通过以下方式获得它\detokenize{#4}

\hyper@linkstart {link}{\Hy@tocdestname }{\numberline {1.1}{\ignorespaces Optimal solution of RNASP.\relax }}\hyper@-linkend

当我使 detokenize 起作用时,这些功能起作用:

\StrLen{\detokenize{#4}}

\StrLeft{\detokenize{#4}}{30}

但这不起作用:

\StrBetween{\detokenize{#4}}{foo}{bar}

此外,我需要:在图号后面放置一个,并在标题开始之前加粗。

编辑:尽管有其他类函数和定义,但我删除了其他内容并创建了一个 overleaf 项目。可以在 gsu12.def 文件的 206-208 上看到字符串操作。https://www.overleaf.com/16674170vmvhjncqjndv

我收到此错误:
https://ibb.co/gZUn2d

答案1

如果您使用它来调整图形标题,我会采纳@Mico的建议并使用该caption包。但是,作为如何执行此操作的练习,一种方法是使用该xstring包并提取第一个空格前后的字符串:

在此处输入图片描述

代码

\documentclass{article}
\usepackage{xstring}

\def\mymacro#1#2#3#4#5{%
    \StrBefore{#4}{ }[\FigNum]%
    \StrBehind{#4}{ }[\FigLabel]%
    \textbf{Figure \FigNum}:~\FigLabel%
}%

\begin{document}

\mymacro{}{}{}{1.1 Optimal solution of RNASP}{}

\end{document}

相关内容