我需要修改宏的一个参数。
例如#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}