Verwenden Sie \IfEndWith mit \ref und alnumsec.sty

Verwenden Sie \IfEndWith mit \ref und alnumsec.sty

Ich benutzeAbonnierenfür eine alphanumerische Abschnittsnummerierung. Ich habe einen neuen Befehl, \myreferenceum Referenzen mit dem hyperrefPaket zu erstellen. Das funktioniert gut.

Ich möchte, dass alle von mir erstellten Fußnoten \myreferencemit einem Punkt enden. Deshalb muss ich prüfen, ob der Abschnitt (z. B. I.1.) bereits mit einem Punkt endet. Ich habe versucht, dies zu verwenden, \IfEndWith{\detokenize{\ref{#1}}}{.}{(already has dot)}{.}aber es funktioniert nicht.


Dies ist mein Beispiel:

\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

Antwort1

\refist nicht erweiterbar, \IfEndWithkann also nicht wirklich mit arbeiten \ref, aber das Paket \getrefnumbervon refcountist erweiterbar. Das Paket wird hyperreftrotzdem von geladen.

\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}

Bildbeschreibung hier eingeben

Antwort2

\@addpunctSie können „from “ verwenden amsthm, wodurch das Argument nicht hinzugefügt wird, wenn der aktuelle Leerraumfaktor größer als 1000 ist. Dazu muss allerdings der Leerraumfaktor nach den römischen Ziffern leicht geändert werden.

\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}

Vergessen Sie nicht, Zeilenenden in Makrodefinitionen zu maskieren.

Bildbeschreibung hier eingeben

verwandte Informationen