将 \IfEndWith 与 \ref 和 alnumsec.sty 一起使用

将 \IfEndWith 与 \ref 和 alnumsec.sty 一起使用

我在用着阿尔努姆塞克用于字母数字部分编号。我有一个新命令\myreference来使用包创建引用hyperref。这很好用。

我希望我创建的所有脚注都\myreference以一个点结尾。这就是为什么我需要检查该部分(例如:I.1.)是否已经以一个点结尾。我试过使用,\IfEndWith{\detokenize{\ref{#1}}}{.}{(already has dot)}{.}但没有用。


这是我的例子:

\documentclass[]{report}

\usepackage{hyperref}
\usepackage{xstring}

\usepackage{alnumsec}
\alnumsectionlevels{1}{section,subsection,subsubsection}
\alnumsecstyle{Ral}

\newcommand{\myreference}[1]{
   \footnote{
    See page \pageref{#1}, section \ref{#1}
    \IfEndWith{\detokenize{\ref{#1}}}{.}{(already has dot)}{.}
   }
}

\begin{document}

\section{Section}\label{a}
First section\myreference{a}
\subsection{jkhahjkas}
My subsection.
\subsubsection{three}\label{b}
Third section\myreference{b}

\end{document}
\endinput

答案1

\ref不可扩展,因此\IfEndWith无法真正使用\ref,但包\getrefnumber是可扩展的。无论如何,refcount包都是通过加载的。hyperref

\documentclass[]{report}

\usepackage{xstring}
\usepackage{hyperref}


\usepackage{alnumsec}
\alnumsectionlevels{1}{section,subsection,subsubsection}
\alnumsecstyle{Ral}

\newcommand{\myreference}[1]{
   \footnote{
    See page \pageref{#1}, section \ref{#1}
    \IfEndWith{\getrefnumber{#1}}{.}{(already has dot)}{.}
   }
}

\begin{document}

\section{Section}\label{a}
First section\myreference{a}
\subsection{jkhahjkas}
My subsection.
\subsubsection{three}\label{b}
Third section\myreference{b}

\end{document}

在此处输入图片描述

答案2

如果当前空间因子大于 1000,则可以使用不添加\@addpunct其参数。但是,这需要稍微改变罗马数字后的空间因子。amsthm

\documentclass[]{report}

\usepackage{amsthm} % for \@addpunct
\usepackage{hyperref}

\usepackage{alnumsec}

\alnumsectionlevels{1}{section,subsection,subsubsection}
\alnumsecstyle{Ral}
\protected\def\Romanperiod{\spacefactor1001 .}
\surroundRoman{}{\Romanperiod}

\makeatletter
\newcommand{\myreference}[1]{% <-- don't forget
   \footnote{% <-- don't forget
     See page~\pageref{#1}, section~\ref{#1}\@addpunct{.}% <-- don't forget
   }% <-- don't forget
}
\makeatother

\begin{document}

\section{Section}\label{a}
First section\myreference{a}

\subsection{jkhahjkas}
My subsection.

\subsubsection{three}\label{b}
Third section\myreference{b}

\end{document}

不要忘记在宏定义中屏蔽行尾。

在此处输入图片描述

相关内容