
Ich benutzeAbonnierenfür eine alphanumerische Abschnittsnummerierung. Ich habe einen neuen Befehl, \myreference
um Referenzen mit dem hyperref
Paket zu erstellen. Das funktioniert gut.
Ich möchte, dass alle von mir erstellten Fußnoten \myreference
mit 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
\ref
ist nicht erweiterbar, \IfEndWith
kann also nicht wirklich mit arbeiten \ref
, aber das Paket \getrefnumber
von refcount
ist erweiterbar. Das Paket wird hyperref
trotzdem 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}
Antwort2
\@addpunct
Sie 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.