在我自己的樣式檔案中傳遞 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不知道鍵值選項的套件命令,而是\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可以使用可選參數 to ,但在您的方法中卻不能使用。

\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或根本沒有選項的輸出是

在此輸入影像描述

相關內容