將 \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,但從包\getrefnumberrefcount可以擴展。無論如何,該包已加載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,您可以使用\@addpunctfrom ,不會新增其參數。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}

不要忘記在巨集定義中屏蔽行尾。

在此輸入影像描述

相關內容