
estou a usaralnumsecpara uma numeração de seção alfanumérica. Tenho um novo comando \myreference
para criar referências com o hyperref
pacote. Isso funciona bem.
Quero que todas as minhas notas de rodapé criadas \myreference
terminem com um ponto. É por isso que preciso verificar se a seção (por exemplo: I.1.) já termina com ponto. Tentei usar \IfEndWith{\detokenize{\ref{#1}}}{.}{(already has dot)}{.}
mas não funciona.
Este é o meu exemplo:
\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
Responder1
\ref
não é expansível, então \IfEndWith
não posso realmente trabalhar com \ref
, mas \getrefnumber
do refcount
pacote é expansível. O pacote é carregado de hyperref
qualquer maneira.
\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}
Responder2
Você pode usar \@addpunct
from amsthm
which não adicionará seu argumento se o fator de espaço atual for maior que 1000. No entanto, isso requer alterar um pouco o fator de espaço após os algarismos romanos.
\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}
Não se esqueça de mascarar os finais de linha nas definições de macro.