
각주를 사용자 정의하는 패키지를 작성했습니다. 지금은 한 가지 기능만 중요합니다. 각주 글꼴을 변경하기 위해 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
전혀 없는 출력 은 다음과 같습니다.