내 스타일 파일에 bool 변수를 전달할 때 오류가 발생합니다.

내 스타일 파일에 bool 변수를 전달할 때 오류가 발생합니다.

각주를 사용자 정의하는 패키지를 작성했습니다. 지금은 한 가지 기능만 중요합니다. 각주 글꼴을 변경하기 위해 bool 매개변수를 제공하고 싶습니다.

스타일 파일은 다음과 같습니다.

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{AFWfnotetext}[2019/07/07 v1.1 A footnotes]

\RequirePackage{sectsty}
\RequirePackage{kvoptions}

\SetupKeyvalOptions{
    family=AFW,
    prefix=AFW@
}%

\DeclareBoolOption[true]{condensed}
%\ProcessLocalKeyvalOptions*


\let\oldfootnote\footnote

\ifAFW@condensed
    \RenewDocumentCommand{\footnote}{ O{} m }
    {\oldfootnote{\textcn{#2}}}
\else
    \RenewDocumentCommand{\footnote}{ O{} m }
    {\oldfootnote{#2}}
\fi

\ExecuteOptions{condensed}

\ProcessOptions\relax

내 문서의 서문에 압축된 값을 전달하지 않으면 문제가 없지만 다음을 사용하면 \usepackage[condensed=true]{AFWfnotetext}내 문서에서 다음 메시지가 나타납니다.

Unknown option `condensed=true' for package `AFWfnotetext'. \ProcessOptions\relax

저는 LaTeX 프로그래밍이 처음이어서 무슨 일이 일어나고 있는지 알 수 없습니다.

당신이 나를 도울 수 있기를 바랍니다.

미리 감사드립니다

답변1

LaTeX 커널은 키 값 옵션을 지원하지 않습니다. 따라서 kvoptions당신이 사용한 것과 같은 패키지가 있습니다 . 그러면 \ProcessOptions키 값 옵션을 모르는 대신 에 같은 package 명령을 \ProcessKeyvalOptions사용해야 합니다.

\ExecuteOptions{condensed}\DeclareBoolOption[true]{condensed}는 이미 로 옵션을 초기화했기 때문에 여기서는 의미가 없습니다 true.

옵션 선언, 사용 및 옵션 작업 순서가 잘못되었습니다.

  • 첫 번째: 옵션이 정의됩니다( \SetKeyvalOptions, \DelareBoolOption).
  • 두 번째: 옵션이 처리됩니다( \ProcessOptions).
  • 셋째, 평가 단계에서는 옵션 값( \ifAFW@condensed)에 따라 코드가 실행됩니다.

답변2

당신이 사용할 수있는 l3keys2e:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{AFWfnotetext}[2019/07/07 v1.1 A footnotes]

\RequirePackage{l3keys2e}
\RequirePackage{xparse}

\ExplSyntaxOn

\keys_define:nn { AFWfnotetext }
 {
  condensed .bool_set:N = \g_AFWfnotetext_condensed_bool,
  condensed .default:n  = true,
  condensed .initial:n  = true,
 }

\ProcessKeysPackageOptions { AFWfnotetext }

\cs_set_eq:cc { latex@footnotetext } { @footnotetext }

\bool_if:NT \g_AFWfnotetext_condensed_bool
 {
  \cs_set:Npn \@footnotetext #1 { \latex@footnotetext{\textit[#1}} }
 }

참고: (패키지가 정의를 제공해야 함) \itshape에 대해 모르기 때문에 사용했습니다 .\textcn

다음은 더 작은 그림을 만들기 위해 텍스트 높이를 줄인 테스트 파일입니다. 선택적 인수를 \footnote사용할 수 있지만 귀하의 접근 방식으로는 사용할 수 없습니다.

\documentclass{article}

\usepackage[
%  condensed,
%  condensed=true,
  condensed=false,
]{AFWfnotetext}

\setlength{\textheight}{4cm}

\begin{document}

Test\footnote{Test for footnotes}

Test\footnote[4]{Another test}

\end{document}

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

condensed옵션이 없거나 condensed=true전혀 없는 출력 은 다음과 같습니다.

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

관련 정보