J'ai un fichier texte de sujets de cours de mon cours de physique qui ressemble à ceci:
1/14,Galilean relativity,Einsteinian relativity,Minkowski space,Henri Poincare,,
1/16,Lorentz transformations,Velocity transformations,Proper time,Light aberration,Lorentz tensors formalism,Minkowski space
1/23,Lorentz boost,Lorentz group,Poincare group,contravariant tensor,covariant tensor,d'Alembertian
En fait, je le stocke sous le nom de Google Doc afin de pouvoir l'exporter au format tsv, ods, xslx, etc. au lieu d'un fichier csv.
Je souhaite générer un index, comme vous le verrez à la fin d'un livre, en répertoriant les sujets par ordre alphabétique par date, par exemple.
d'Albertian 1/23
... (more entries)
Minkowski space 1/14 1/16
... (more entries)
Velocity transformations 1/16
ou si vous voulez avoir envie:
d'Albertian ................. 1/23
... (more entries)
Minkowski space ............. 1/14, 1/16
... (more entries)
Velocity transformations .... 1/16
J'ai d'abord pensé à utiliser LaTeX
, mais les packages d’indexation semblent tous aller par numéro de page, et non par une chaîne arbitraire comme une date. En fait, "MakeIndex suppose que tous les numéros de page sont des chiffres arabes ou des chiffres latins minuscules;" http://www.tex.ac.uk/ctan/indexing/makeindex/doc/makeindex.pdf .
De plus, le fichier d’entrée pour makeindex
doit être une liste avec un sujet et un numéro de page par ligne; il se contente de faire le tri et le formatage: http://www.troubleshooters.com/linux/lyx/makeindex.htm
Donc, le logiciel que je cherche a besoin de faire ceci:
- Acceptez un format de fichier csv, tsv ou autre.
Ce serait idéal, mais je serais d'accord avec un format de texte qui pourrait être assez facilement généré à partir d'un fichier de feuille de calcul, par exemple. par substitutions avec
awk
oused
. - Associez la première entrée de chaque ligne (par exemple la date
1/14
) avec chacune des entrées suivantes (par exemple, les rubriquesGalilean relavity
,Minkowski space
, etc.). - Triez tous les sujets pour toutes les dates par ordre alphabétique.
- Combinez les sujets qui apparaissent plus d'une fois dans une seule entrée, en répertoriant chaque date d'affichage du sujet.
- Afficher le résultat au format standard.
Ma seule exigence pour le logiciel est qu’il fonctionne sous Linux.
Je ne suis pas pointilleux sur le format de sortie; Les fichiers texte, LaTeX, HTML, ODF, etc. me conviennent, dans la mesure où je peux imprimer une copie papier.
la source
error FS0222: Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'
generate-index.fs(22,41): error FS0001: This expression was expected to have type string [] but here has type seq<string>
let datestr = String.Join (", ",dates)
.dates
est en position (22,41)Shell scripting et le glorieux
awk
commander:la source
awk
trier la sortie? Pour le moment, je dois le trier par ordre alphabétique. En outre, à quel point serait-il difficile d'éliminer les doubles espaces après le sujet? (En outre, la première ligne renvoie toutes les dates, donc je le filtre avectail -n +2
.)Les deux
F#
etawk
les solutions fonctionnent bien avec quelques ajustements. Cependant, j'ai décidé d'utiliser le script python suivant:Dans ce cas,
item
correspond à une date, etkeys
correspondent à des sujets. le\dotfill
est le balisage LaTeX pour remplir un espace horizontal avec des points.la source