個亼滴兲箜
個亼滴兲箜
这家伙很懒,什么也没写!

注册于 4年前

回答
9
文章
0
关注者
0

我会交换一下 \tl_if_eq:Nn\cs_set:Npn \@makefntext 的顺序

% test.cls
\NeedsTeXFormat {LaTeX2e}
\ProvidesExplClass {test} {2023/02/17} {0.1} {Just a test}
\RequirePackage {l3keys2e}
%%
\LoadClass{article}
%%
\cs_new:Npn \__symbol:n #1 {\tex_char:D #1 \scan_stop:}
\tl_new:N \g__fn_num_style_tl
\tl_new:N \g__fn_num_XITS_tl
\tl_new:N \g__fn_num_plain_tl
\tl_gset:Nn \g__fn_num_XITS_tl {XITS}
\tl_gset:Nn \g__fn_num_plain_tl {plain}
%%
\keys_define:nn {test/style} {
  footnote-num .choice:,
  footnote-num .value_required:n = true,
  footnote-num .choices:nn =
    {XITS, plain}
    {\tl_gset:NV \g__fn_num_style_tl \l_keys_choice_tl},
  footnote-num .initial:n = {XITS}
}
%%
%% 这个函数是带圈数字支持
\cs_new:Npn \__select_fn_num:n #1 {
  \int_compare:nTF {#1>=21}
    {
      \int_compare:nTF {#1>=47}
        {\__symbol:n {\int_eval:n {"24B6-47+#1}}}
        {\__symbol:n {\int_eval:n {"24D0-21+#1}}}
    }
    {\__symbol:n {\int_eval:n {"2460-1+#1}}}
}
\cs_new:Npn \__plain_fn_num:n #1 {\int_use:N #1}
%%
\cs_new:Npn \__fn_num_:N #1 {
  \tl_case:Nn \g__fn_num_style_tl {
    \g__fn_num_XITS_tl  {\__select_fn_num:n {#1}}
    \g__fn_num_plain_tl {\__plain_fn_num:n  {#1}}
  }
}
%% 以下是脚注调整
\tl_set:Nn \thefootnote {\__fn_num_:N \c@footnote}
\tl_new:N  \g__makefnmark_tl
\tl_gset:Nn \g__makefnmark_tl {\hbox{\normalfont\@thefnmark\space}}
\cs_set_eq:NN \__old_@makefntext:n \@makefntext
\cs_set:Npn \@makefntext #1
  {
    \tl_if_eq:NnTF \g__fn_num_style_tl {plain}
    { \__old_@makefntext:n {#1} }
    { \noindent\hb@xt@2em{\hss\g__makefnmark_tl}#1 }
  }
%%
\NewDocumentCommand \testsetup {m} {
  \keys_set:nn {test} {#1}
}
%%
\endinput

另外借个楼,看有没有人感兴趣。我写毕业论文的时候也用到了带圈数字的功能,觉得这个功能完全可以模块化成单独宏包,然后就写了个自用的小包包,哈哈~ circlenum.sty

经群友提醒,换用 l3prop 模块能实现功能。不过仍想知道原方法失效的原因,多学习学习。

\documentclass{ctexart}
\usepackage{amsthm}

\ExplSyntaxOn
% 使用方法 \addtheorem{<style>}{<environment name>=<Chinese name>, ...}
\NewDocumentCommand \addtheorem { m m }
  {
    \prop_set_from_keyval:Nn \l_theorem_environment_chinese_prop { #2 }
    \prop_map_inline:Nn \l_theorem_environment_chinese_prop
      {
        \theoremstyle { #1 }
        \newtheorem { ##1 } { ##2 }
        \newtheorem* { ##1* } { ##2 }
      }
  }
\ExplSyntaxOff

\addtheorem{definition}{
  definition = 定义,
  assume = 假设,
  lemma = 引理,
  question = 问题
}
\addtheorem{remark}{
  remark = 注
}

\begin{document}

\begin{definition}
定义测试
\end{definition}

\begin{remark*}
注释测试
\end{remark*}

\end{document}

微信截图_20221231195251.png

ltxdoc 文档类将 | 重定义为了抄录命令的开始符,详见 texdoc ltxdoc sec.6.

image.png

MWE 为

\documentclass{article}
\begin{document}
\line(1,0){50}
\line(0,1){50}
\end{document}

用法为

\line(x_run,y_rise){travel}

详见 texdoc latex2e sec 8.19.5.

额直接用 \the\year 年 \the\month 月 不香么

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikz[remember picture,overlay] \draw (current page.north) -- (current page.south);
\end{document}

aaabbce517586d87f309330411b274a.png

发布
问题