\IfEndWith を \ref および alnumsec.sty と共に使用する

\IfEndWith を \ref および alnumsec.sty と共に使用する

私は使用していますアルナムセック英数字のセクション番号付け用。パッケージ\myreferenceへの参照を作成するための新しいコマンドがありますhyperref。これは正常に動作します。

作成したすべての脚注を\myreference1 つのドットで終わらせたいです。このため、セクション (例: 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 より大きい場合は、引数を追加しない\@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}

マクロ定義の行末をマスクすることを忘れないでください。

ここに画像の説明を入力してください

関連情報