制作历史时期的索引

制作历史时期的索引

我正在写论文,我想制作一个包含世纪、年份、月份、日期、事件和历史时期的索引。所以我尝试创建一些命令,但不令人满意,我正在寻求您的帮助。

什么是困难?

  • 我有数字数据和名称(停战协定、1857 年 1 月 15 日、1455 年、19 世纪)
  • 我有一些创作时期(1801-1812,从 11 世纪到 13 世纪)
  • 我需要缩进我的索引(event!day!month!year!centuries
  • 有时我只有世纪或一年
  • 我想对公元前的所有日期和世纪进行分类(-200;-3;23;190;1850;2014)
  • 我不知道是否要发出一个或多个命令

我尝试过:

第一步,只针对好的世纪发出一个命令,其中的 a*表示公元前世纪(对于负面世纪的分类,我使用分数):

% !TEX encoding = UTF-8 Unicode
\documentclass{scrbook}
\usepackage[english,frenchb]{babel}             
\usepackage[quiet]{fontspec}                    
\usepackage[automark]{scrpage2}         
\usepackage[babel,french=guillemets*]{csquotes}
\usepackage{index}                                  
\usepackage{ifthen}                                 
\usepackage{ifmtarg}                                
\usepackage{fp}                                     

  \setmainfont{Adobe Garamond Pro}
  \addtokomafont{disposition}{\normalfont}
\makeindex
\newindex{can}{cax}{cad}{Index des périodes} % makeindex period.cax -o period.cad
  \makeatletter\newcommand*{\sivide}{\@ifmtarg}\makeatother 
  \makeatletter\newcommand*{\sistar}{\@ifstar}\makeatother 

\newcommand*{\siglo}{\sistar\siglom\siglop}
\newcommand\siglop[1]%
 {\ifthenelse{#1 = 1}%                      
  {#1\up{er}~siècle de notre ère\index[can]{#1@#1\up{er}~siècle de notre ère}}%
  {#1\up{ème}~siècle\index[can]{#1@#1\up{ème}~siècle}}}%
\newcommand\siglom[1]%                          
 {\ifthenelse{#1 = 1}%
  {#1\up{er}~siècle avant notre ère\index[can]{0,6@1\up{er}~siècle avant notre ère}}%
  {#1\up{ème}~siècle avant notre ère\index[can]{\FPeval{\fraction}{1/#1}\fraction @#1\up{ème}~siècle avant notre ère}}}

\begin{document}
\siglo*{12} … \siglo*{1} … \siglo{14} … \siglo{1}
\printindex[can]
\end{document}

另一个命令(取代第一个命令)已经有几个世纪和几年了,但我的索引失败了:

    \newcommand*{\lan}{\sistar\lans\lano}
    \newcommand\lano[2]%
     {\sivide{#2}%
      {{\ifthenelse{#1 = 1}%                        
       {#1\up{er}~siècle de notre ère\index[can]{#1@#1\up{er}~siècle de notre ère}}%
       {#1\up{ème}~siècle\index[can]{#1@#1\up{ème}~siècle}}}}%
      {\sivide{#1}%
       {#2 de notre ère\index[can]{1\up{er}~siècle de notre ère!#2@#2}}%
       {#1#2\index[can]{\FPeval{\fraction}{#1+1}\fraction \up{ème}~siècle!#2@#1#2}}}}
    \newcommand\lans[2]%
     {\sivide{#2}%
      {{\ifthenelse{#1 = 1}%
       {#1\up{er}~siècle avant notre ère\index[can]{0,6@1\up{er}~siècle avant notre ère}}%
       {#1\up{ème}~siècle avant notre ère\index[can]{\FPeval{\fraction}{1/#1}\fraction @#1\up{ème}~siècle avant notre ère}}}}
      {\sivide{#1}%
       {-#2\index[can]{1\up{er}~siècle avant notre ère!\FPeval{\fraction}{1/#2}\fraction @-#2}}%
       {-#1#2\index[can]{\FPeval{\fraction}{#1+1}\fraction \up{ème}~siècle avant notre ère !\FPeval{\fraction}{1/#2}\fraction @-#1#2}}}}

并在文本中

\lan*{12}{} … \lan*{1}{} … \lan{14}{} … \lan{1}{} … 

\lan*{11}{16} … \lan*{}{18} … \lan{}{20} … \lan{19}{90} … 

所以之后我就卡住了!谢谢你的帮助

答案1

经过几个小时的业余努力,我发布了我所命名的命令,\qd例如法语单词“quand”(意思是“何时”)。这是完整的形式:\qd*[]{}{}{}{}{}{}。我向您解释用法:

  • 我输入*的是负面日期,没有输入正面日期
  • 第一个参数[#1]是具有不同用法的文本参数。看看完整代码以便更好地理解。例如,如果我想写一个事件,[french Revolution]它就是我要写的地方。如果我只想写一个日期,我建议有 7 个选项:
    • []日期的单一形式为空
    • [l]使用长格式
    • [c]缩写形式(法语为 forme courte)
    • [t]非常简短的形式(forme très courte)
    • [j]自 1901 年起,星期几名称 (jour) 的单一形式
    • [jc]以星期几名称缩写的形式 (jour court)
    • [jt]带有星期几名称的极短形式(jour très court)
  • 其他 6 个参数代表日期元素:
    • {#2}千年(0 至 ∞)
    • {#3}世纪(0 至 9)
    • {#4}十进制(0 至 9)
    • {#5}年份(0 至 9)
    • {#6}月(1 至 12)
    • {#7}天(1 至 31)

看,这里有一些例子:

Le \qd*[Néolithique]{10}{}{}{}{}{} commence au \qd*[]{10}{}{}{}{}{}, \\
Des \qd*[hiéroglyphes]{3}{2}{}{}{}{} à l'\qd*[alphabet phénicien]{1}{1}{}{}{}{} \\
Les \qd*[c]{1}{0}{}{}{}{}, \qd*[c]{1}{1}{}{}{}{}, \\ 
En \qd*[l]{0}{9}{8}{3}{}{} & dans les \qd*[]{2}{0}{0}{}{}{}, \\
En \qd*[]{0}{3}{3}{2}{}{}-\qd*[c]{0}{3}{3}{1}{}{}, Alexandre devient pharaon, \\
Le \qd*[l]{0}{0}{4}{4}{3}{15}, on entendit un \qd*[\emph{tu quoque}]{0}{0}{4}{4}{3}{15}, \\
Le \qd*[c]{0}{0}{0}{1}{12}{25}, Marie cria, \\
\qd[l]{0}{0}{0}{9}{1}{1}, \\
Les \qd[c]{1}{0}{}{}{}{} & \qd[c]{1}{1}{}{}{}{}, \\ 
L'\qd[hégire]{0}{6}{2}{2}{7}{16}, \\
Le \qd[]{1}{7}{8}{9}{7}{14} changea la destinée de la France, \\
Du \qd[jc]{1}{9}{9}{9}{12}{31} au \qd[j]{2}{0}{0}{0}{1}{1}, \\
Du \qd[jt]{1}{9}{8}{4}{1}{1} au \qd[j]{1}{9}{8}{4}{1}{2}, jour de \qd[naissance]{1}{9}{8}{4}{1}{2}.

以下是正文:

文本

& 索引:

指数

我遇到了一些困难,这里总结了一下并给出了解决方案:

  • 对于不知道负数的索引中的负数日期进行排名,我在命令中使用了一些分数,例如1/((#2)+1),从而对索引中的千年进行排名是好的:-3(= 1/4),-2(= 1/3),-1(= 1/2),1,2,3 ......,
  • \qd[]{1}{8}{}{}{}{}对于索引中链接的18 世纪与 1789 年之间的差异\qd[]{1}{7}{8}{9}{}{},我使用了一些补充(看看完整代码
  • 我区分了第一个(千年、世纪、十年或年份)和其他年份,例如\ifthenelse{\equal{#2}{0}}{…}{…},因为 2000 年是在第二个千年,即 20 世纪,但在 2000 年的十年里……(看看完整代码;)
  • 我现在正在使用 arara 和一些软件包,例如datetimefpanwkably,glossaries& imakeidx,对我来说是big evolution。

所以,我给她下了命令& 完整代码,因为这里看起来太长了。我在编译中看到一些错误,但是,它在文档中看起来很完美。如果有人想简化这个繁重的命令,我会听取你的建议。谢谢你的帮助。再见

相关内容