\ref 및 alnumsec.sty와 함께 \IfEndWith를 사용하십시오.

\ref 및 alnumsec.sty와 함께 \IfEndWith를 사용하십시오.

나는 사용하고있다alnumsec영숫자 섹션 번호 매기기의 경우. 패키지 \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패키지 \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

\@addpunct현재 공간 인자가 1000보다 큰 경우 인수를 추가하지 않는 from을 사용할 수 있습니다. 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}

매크로 정의에서 줄 끝을 가리는 것을 잊지 마세요.

여기에 이미지 설명을 입력하세요

관련 정보