У меня есть текстовый файл лекционных тем из моего класса физики, который выглядит следующим образом:
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
Я на самом деле храню его как Google Doc, так что я могу экспортировать его как CSV, ODS, XSLX и т.д. Вместо CSV.
Я хочу создать индекс, как вы могли бы увидеть в конце книги, перечисляя темы в алфавитном порядке по дате, например,
d'Albertian 1/23
... (more entries)
Minkowski space 1/14 1/16
... (more entries)
Velocity transformations 1/16
или если вы хотите стать модным:
d'Albertian ................. 1/23
... (more entries)
Minkowski space ............. 1/14, 1/16
... (more entries)
Velocity transformations .... 1/16
Сначала я подумал об использовании LaTeX
, но все пакеты индексации, похоже, идут по номеру страницы, а не по произвольной строке, такой как дата. Фактически, «MakeIndex предполагает, что все номера страниц являются либо арабскими, либо строчными римскими цифрами»; http://www.tex.ac.uk/ctan/indexing/makeindex/doc/makeindex.pdf. Более того, входной файл для makeindex
должен быть списком с одной темой и номером страницы в строке; он просто выполняет сортировку и форматирование: http://www.troubleshooters.com/linux/lyx/makeindex.htm
Итак, программное обеспечение, которое я ищу, должно сделать это:
- Принять CSV, TSV или другой формат электронной таблицы.
Это было бы идеально, но я бы согласился с текстовым форматом, который довольно легко можно было бы сгенерировать из файла электронной таблицы, например, путем подстановки с помощью
awk
илиsed
. - Свяжите первую запись каждой строки (например, дату
1/14
) с каждой из следующих записей (например, темыGalilean relavity
,Minkowski space
и т.д.). - Сортировать все темы по всем датам в алфавитном порядке.
- Объедините темы, которые появляются более одного раза, в одну запись, перечисляя каждую дату, в которой тема появляется.
- Выведите результат в стандартном формате.
Мое единственное требование к программному обеспечению - чтобы оно работало в Linux.
Я не суетливый по поводу формата вывода; текстовый файл, LaTeX, HTML, odf и т. д. все в порядке, пока я могу распечатать бумажную копию.