我正在尝试用 替换s:
书签中的连字符s
。这是必要的,因为我的文档是使用 fraktur 字体编写的,但冒号出现在书签中,因为它们不是 fraktur。
我当前的代码如下:
\documentclass[a4paper]{scrartcl}
\usepackage{yfonts}
\addtokomafont{disposition}{\frakfamily\fraklines}
\usepackage[hidelinks]{hyperref}
\usepackage{xstring}
\newcommand{\removeLigatures}[1]{%
\IfSubStr{#1}{s:}{%
\StrSubstitute{#1}{s:}{s}%
}{#1}
}
\newcommand{\mySection}[1]{%
\section{\texorpdfstring{#1}{\removeLigatures{#1}}}
}
\begin{document}
\frakfamily
\tableofcontents
\mySection{Jus:t a tes:t}
\end{document}
我的代码似乎存在一些问题,因为我得到了一个带有文本的书签Jus:t a tes:ts:s:sJus:t a tes:t
。我该如何修复这个问题以实现所需的结果?
答案1
您必须在将参数提供给 \texorpdfstring 之前进行替换。例如使用 expl3:
\documentclass[a4paper]{scrartcl}
\usepackage{yfonts}
\usepackage[hidelinks]{hyperref}
\usepackage{expl3}
\ExplSyntaxOn
\newcommand\removeLigatures[1]{%
\tl_set:Nn \l_tmpa_tl{#1}
\regex_replace_all:nnN { s: } { s } \l_tmpa_tl
}
\newcommand{\mySection}[1]{%
\removeLigatures{#1}
\section{\texorpdfstring{#1}{\l_tmpa_tl}}
}
\ExplSyntaxOff
\addtokomafont{sectioning}{\frakfamily}
\begin{document}
\frakfamily
\tableofcontents
\mySection{Jus:t a tes:t}
\end{document}