使用 \alph 来改变字母

使用 \alph 来改变字母

我的语言(斯洛文尼亚语)使用不同的字母表,以 a、b、c、č、d 开头。我已正确babel设置,但\alph{}编号仍然显示为 a、b、c、d。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[slovene]{babel}

\renewcommand\thesection{\alph{section}}

\begin{document}

\section{}
\section{}
\section{}
\section{}

\end{document}

答案1

以下\alph示例\Alph根据斯洛文尼亚字母. 内部的原始定义\@alph可以\@Alph在 LaTeX 内核中找到 (源文档)。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[slovene]{babel}

\renewcommand\thesection{\alph{section}}

\makeatletter
\renewcommand*{\@alph}[1]{%
  \ifcase#1\or a\or b\or c\or\v c\or
    d\or e\or f\or g\or h\or i\or j\or
    k\or l\or m\or n\or o\or p\or r\or s\or\v s\or
    t\or u\or v\or w\or x\or
    y\or z\or
    \v z\else\@ctrerr\fi
}
\renewcommand*{\@Alph}[1]{%
  \ifcase#1\or A\or B\or C\or\v C\or
    D\or E\or F\or G\or H\or I\or J\or
    K\or L\or M\or N\or O\or P\or R\or S\or\v S\or
    T\or U\or V\or W\or X\or
    Y\or Z\or\v Z\else\@ctrerr\fi
}
\makeatother

\begin{document}

\section{\Alph{section}}
\section{\Alph{section}}
\section{\Alph{section}}
\section{\Alph{section}}

\end{document}

结果

评论:

  • 而不是č使用 定义的形式\v c,它被称为 LaTeX 内部字符表示 (LICR)。它的优点是它不依赖于输入编码。

  • 我建议\usepackage[T1]{fontenc}使用Computer Modern 字体\usepackage{lmodern}代替旧的OT1字体编码,其中重音字母由基本字符和重音符号构成。T1编码包含重音字符的插槽,而 Latin Modern 字体将 Computer Modern 字体扩展为许多重音字符作为单个字形。

答案2

\alph以下是\@alphLaTeX 内核

\def\alph#1{\expandafter\@alph\csname c@#1\endcsname}
\def\@alph#1{%
  \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
   k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
    y\or z\else\@ctrerr\fi}

\@alph\ifcase使用...语句对传递的计数器的值进行条件处理\fi。您可以通过这种方式创建自己的计数器表示。我使用下面的\slalph和来做到这一点\@slalph(字母表取自维基百科的斯洛文尼亚字母):

在此处输入图片描述

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[slovene]{babel}

\makeatletter
\def\slalph#1{\expandafter\@slalph\csname c@#1\endcsname}
\def\@slalph#1{%
  \ifcase#1\or a\or b\or c\or č\or d\or e\or f\or g\or h\or i\or j\or
   k\or l\or m\or n\or o\or p\or r\or s\or š\or t\or u\or v\or 
    z\or ž\else\@ctrerr\fi}
\makeatother

\renewcommand\thesection{\slalph{section}}

\begin{document}

\section{}
\section{}
\section{}
\section{}

\end{document}

您可以对大写字母执行相同操作,并相应地定义(比如)\slAlph(和\@slAlph)。

相关内容