我想创建一个\pagenumbering
仅使用天城体字母的样式\frontmatter
。下面是我想要创建的一个例子:
i -> अ
ii -> आ
iii -> इ
iv -> ई
v -> उ
vi -> ऊ
等等。PS 这是使用天城体文字的印地语/梵语字母的自然顺序。
我创建了一个 sty 文件:
% varnamala.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{varnamala}
\RequirePackage{fancyhdr}
% Define your custom symbols here
\newcommand{\customPageSymbol}[1]{%
\ifcase#1% 0
\or अ% 1
\or आ% 2
\or इ% 3
\or ई% 4
\or उ% 5
\or ऊ% 6
\or ऋ% 7
\or ॠ% 8
\or ऌ% 9
\or ॡ% 10
\or ए% 11
\or ऐ% 12
\or ओ% 13
\or औ% 14
\or क्% 15
\or ख्% 16
\else *\textbf{?}*% for numbers greater than 16
\fi%
}
这是 tex 文件:
% !TEX TS-program = xelatex
% !TEX encoding = UTF-8
\documentclass{book}
\usepackage{polyglossia}
\usepackage{fontspec}
\setmainfont[Script=Devanagari,Mapping=devanagarinumerals]{Sahadeva} % Replace with the actual font name
\usepackage{varnamala}
\setdefaultlanguage{hindi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\frontmatter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand{\thepage}{\customPageSymbol{\arabic{page}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{my title}
\maketitle
\chapter{प्रस्तावना}
यह एक हिंदी किताब की प्रस्तावना है।
\tableofcontents
\mainmatter
\chapter{1}
\end{document}
我做了一些工作,现在它工作正常,但如果我\renewcommand{\thepage}{\customPageSymbol{\arabic{page}}}
从主 tex 文件中删除行,我就看不到天城体 varnamala,而是看到罗马数字。
现在问题完全变成了“如何将此命令直接添加到 sty 文件中以使其起作用?”
PS 这里我使用了自定义字体来自此链接
答案1
\thepage
并不总是可以与 一起使用的数字\ifcase
,它可能是i
、ii
或 ,1 of 32
具体取决于当前样式。
latex 约定是定义一种\@...
采用数字的样式,例如\@roman
,以及一种采用计数器名称的文档命令,例如\roman
。
所以:
\newcommand{\@devnum}[1]{%
\ifcase#1% 0
\or अ% 1
\or आ% 2
\or इ% 3
\or ई% 4
\or उ% 5
\else *\textbf{?}*% for numbers greater than 5
\fi%
}
\newcommand{\devnum}[1]{\@devnum{\value{#1}}
然后你可以使用
\fancypagestyle{customstyle}{%%
\fancyhf{}%% % Clear all headers and footers
\renewcommand{\headrulewidth}{0pt}%% % Remove header line
\fancyfoot[C]{\devnum{page} (\roman{page})} % Custom symbol in the center of the footer
}