是否可以更改 LaTeX 的计数基数?实际上,我正在寻找 6 基数。
我希望此更改适用于所有计数器(目录、页面、章节……)。我找到了这个主题我如何确保全部计数器从 0 开始? 这几乎正是我想要的,但我没有以 10 为底到以 6 为底的函数。
\makeatletter
\def\@arabic#1{\BASEVI\relax}
\def\@roman#1{\romannumeral\BASEVI\relax}
\def\@Roman#1{\expandafter\@slowromancap\romannumeral\BASEVI\relax @}
\makeatother
BASEVI
只是一个占位符。
欲了解更多有关性别系统的信息:seximal.net。
答案1
一句话:
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\cs_set:cpn {@arabic} #1 { \int_to_base:nn { #1 } { 6 } }
\ExplSyntaxOff
\setlength{\textheight}{2.5cm} % to keep the image small
\begin{document}
\newcounter{test}
\loop\ifnum\value{test}<100
\arabic{test}%
\stepcounter{test}%
\space
\repeat
\end{document}
每个定义使用的计数器都\arabic
将以六进制打印,包括page
。
注意:这将破坏所有滥用\the<counter>
获取计数器的十进制表示而不是依赖其抽象值的宏。
更好地定义一个合适的表示并选择它来表示您需要的计数器。
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\cs_new:Npn \basesix_print:N #1 { \int_to_base:nn { #1 } { 6 } }
\cs_generate_variant:Nn \basesix_print:N {c}
\cs_new:Npn \basesix_start:n #1 { \basesix_print:c {c@#1} }
% user interface
\cs_new_eq:NN \basesix \basesix_start:n
% to keep \pagenumbering{basesix} happpy
\cs_new_eq:cN {@basesix} \basesix_print:N
\ExplSyntaxOff
\setlength{\textheight}{2.5cm} % to keep the image small
\pagenumbering{basesix}
\begin{document}
\setcounter{page}{6}
\newcounter{test}
\renewcommand{\thetest}{\basesix{test}}
\loop\ifnum\value{test}<100
\thetest
\stepcounter{test}%
\space
\repeat
\end{document}
答案2
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\def\SIX#1{\expandafter\int_to_base:nn\csname c@#1\endcsname6}
\ExplSyntaxOff
\renewcommand\thesection{\SIX{section}}
\renewcommand\theenumi{\SIX{enumi}}
\begin{document}
\section{aa}
\begin{enumerate}
\item aaa
\item aaa
\item aaa
\item aaa
\item aaa
\item aaa
\item aaa
\item aaa
\item aaa
\item aaa
\end{enumerate}
\section{zzz}
zz
\section{zzz}
zz
\section{zzz}
zz
\section{zzz}
zz
\section{zzz}
zz
\section{zzz}
zz
\end{document}