Как управлять публикациями на локальном компьютере

Я хотел бы найти лучший способ называть публикации, которые я храню на своем локальном компьютере, в виде PDF-файлов. До сих пор я делал что-то вроде этого:

Альбано Р., Соле А., Адамовски Дж., Манкузи Л. (2014) - Модель на основе ГИС для оценки последствий наводнения, а также степени доступности и работоспособности структур стратегического реагирования на чрезвычайные ситуации в городских районах.pdf

Это представляет пару недостатков:

  • Заголовки могут быть очень длинными. Это вызывает проблемы в некоторых операционных системах или программном обеспечении, например OneDrive . В имени файла может быть столько символов...
  • Не все публикации могут следовать этому формату. Вышеупомянутое подходит для журнальных статей и тезисов, но не для книг или других видов публикаций.

Я хотел бы иметь последовательный способ управления такой базой данных. Я подумал о том, чтобы сохранить метаданные публикации, такие как авторы, дата публикации, тип публикации и тип, в отдельном текстовом файле или файле Excel и назвать PDF-файлы по идентификатору, например, и т. д. Это может работать, но для этого потребуется 1.pdfобратиться 2.pdfк и управление электронной таблицей, которая будет содержать все метаданные.

Есть ли простой метод или, возможно, легкое программное обеспечение, которое я могу использовать, чтобы помочь мне с такой задачей?

РЕДАКТИРОВАТЬ

Мне не очень понравилось, как устроен сценарий @Jonas Stein, хотя я обязан ему вдохновением и указанием на использование JabRef. Вот мой альтернативный скрипт:

import bibtexparser
import os
from shutil import copyfile

filename = 'db.bib'
out_folder = 'out'

with open(filename) as bibtex_file:
    db = bibtexparser.load(bibtex_file)

for entry in db.entries:
    print(entry['file'])
    id = entry['ID']
    file = entry['file'].split(':')[1]

    copyfile(file, os.path.join(out_folder, id)+'.pdf')


print('done')

Он намного компактнее и выполняет свою работу.

Некоторые люди предложили использовать для этого специальное программное обеспечение. Абсолютно рекомендуется. Другой вариант — Зотеро . Он может автоматически импортировать все ваши PDF-файлы, обеспечивая хорошую организацию вашей библиотеки, полнотекстовый поиск, создание библиографии и т. д. Работает с LaTeX, Word, ...
Вы пишете в LaTeX? Если это так, файл bibtex уже позаботится о хранении всех метаданных. Затем я предлагаю имена файлов, соответствующие ключам цитирования bibtex, и следую соглашению «turing1936computable», «shannon1948mathematical» и т. д. (только фамилия первого автора).
Для меня обычно важно знать, написана ли статья одним автором, двумя авторами или несколькими авторами. Поэтому я выбираю формат, рекомендованный jabref author1999// . Больше ничего. Остальные детали можно легко найти в вашем библиографическом менеджере (я использую jabref для файлов bibtex). authorA.authorB1999authorA.etal1999
Если вы используете WIndows, почему бы не использовать теги (и сведения и т. д.), уже доступные в структуре файловых папок? См., например, «Как пометить файлы, чтобы привести в порядок файлы Windows 10» Laptopmag.com/articles/tagged-files-windows-10 . Таким образом, информация находится прямо в старом добром файловом менеджере, и вам не нужно прибегать к открытию нового ПО.
Что говорит @TasosPapastylianou . Самое интересное в JabRef заключается в том, что он автоматически генерирует ключи, если вы нажмете CRTL-G, устраняя неоднозначность по мере необходимости («Foo2019» против «Foo2019a»). Если вы затем просто назовете файлы ключами, JabRef автоматически свяжется с ними, и вы сможете открыть PDF-файл (или другой тип файла) одним щелчком мыши из записи JabRef. Очень хороший.

Ответы (9)

Я управляю публикациями с помощью JabRef в базе данных bibtex . Есть возможность добавить ссылку на имя файла с JabRef в базе данных bibtex.

Скрипт python pybibtexcleaner транскрибирует специальные символы в заголовке и перемещает все отсортированные файлы в одну папку с именами файлов в формате

bibkey-title.pdf

Скрипт будет генерироваться из записи нагрудного номера

@Article{Stein2017a,
  author    = {J. Stein and M. Baum and S. Holbein and T. Finger and T. Cronert and C. Tölzer and T. Fröhlich and S. Biesenkamp and K. Schmalzl and P. Steffens and C.H. Lee and M. Braden},
  title     = {Control of Chiral Magnetism Through Electric Fields in Multiferroic Compounds above the Long-Range Multiferroic Transition},
  journal   = {Physical Review Letters},
  year      = {2017},
  volume    = {119},
  number    = {17},
  doi       = {10.1103/physrevlett.119.177201},
  file      = {:../included/119.177201.pdf},
  publisher = {American Physical Society ({APS})}
}

новое имя файла

Stein2017a-Control_of_Chiral_Magnetism_Through_Electric_Fields_in_Multiferroic_Compounds_above_the_Long-Range_Multiferroic_Transition.pdf`

и скопируйте файл, ../articles/а также настройте путь в .bibфайле.

Очень удобно, если имена файлов начинаются с расширения bibkey. Вы всегда должны использовать все цифры года .

Скрипт также может транскрибировать химические формулы в удобочитаемом виде, если они начинаются \ceс \ce{H2O}.

Вы можете отслеживать свою работу с git и восстанавливать старые версии или синхронизировать базу данных литературы на разных ваших системах.

ps: я использую старую стабильную версию JabRef 3.8.2, потому что новые версии 4.x были менее стабильны, когда я их пробовал. Пользователь лучше контролирует процесс переименования с помощью короткого сценария Python и может легко настроить его в соответствии со своими потребностями, но последние версии JabRef поставляются с аналогичными функциями.

Джабреф великолепен. Когда у вас есть библиотека, вы можете искать и управлять ею. Я добавил дополнительное поле для своих собственных заметок о статьях, которые я прочитал.
Да, @Ивана. Вы также можете использовать groupдля printedили readбумаги.
Мне нравится ваше предложение. Я скачал JabRef и попытался загрузить ваш скрипт с github. Я создал базу данных JabRef из 1 документа, изменил файл pybibtexcleaner.iniв соответствии со своими настройками и попробовал python pybibtexcleaner.py. Однако reвыдало ошибку: `re.error: bad escape \m в позиции 1. Проблемной строкой является строка 29. Как вы думаете, в чем может быть проблема? Спасибо.
@user32882 user32882 о да, была ошибка. Загрузите последнюю версию и повторите попытку.
Кажется, теперь это работает, но я не совсем понимаю цель этого скрипта. Вы анализируете файл .bib, извлекаете заголовки, а затем перезаписываете файл в другой папке как bibkey-title.pdf. В чем смысл этого? Кроме того, зачем добавлять заголовок? Некоторые заголовки могут быть очень длинными....
@user32882 user32882 цель состоит в том, чтобы иметь файлы с уникальными именами файлов, которые могут быть использованы человеком, чтобы напрямую увидеть, какой pdf-файл связан с файлом \ref{}. Вы можете ограничить длину имени файла, просто обрезав строку после n символов.
Я думаю, что ваш сценарий слишком сложен. Пожалуйста, посмотрите мое редактирование для чего-то очень простого, что просто работает и легко отлаживается.

Для имени файла я использую систему, которую я скопировал у своего научного руководителя:

aaaadd_xxxx_jjj.pdf

где:

  • aaaa: имя первого автора (переменная длина)
  • дд: 2-значный год публикации (фиксированная длина)
  • xxxx: первое слово заголовка, минус статьи и другие маленькие слова (переменная длина)
  • jjj: аббревиатура журнала публикации (переменная длина, но короткая)

Затем я использую то же самое без .pdfмоего ключа bibtex (с добавленным :).

Например:

Т. Пингвин и др., Обзор деятельности, связанной с отдыхом в Антарктике, Журнал невероятных результатов, 2025 г.

было бы

penguin25_survey_jir.pdf

с помощью ключа bibtex penguin25:_survey_jir.

Мне нравится эта система, потому что:

  • я привык к этому
  • Имена файлов остаются компактными и дружественными к оболочке UNIX.
  • Закодированной информации обычно достаточно, чтобы идентифицировать бумагу.

Он не распространяется на маркировку или категоризацию.

Это хорошо относится к журнальным статьям. Для статей или книг по материалам конференций аббревиатура журнала заменяется аббревиатурой конференции или издателя или, возможно, полным названием издателя; Я не совсем последователен. Но у меня обычно нет целых книг в формате PDF.

Каковы преимущества и недостатки этого формата?
@FedericoPoloni Добавил несколько пунктов, касающихся этого вопроса.
Есть ли у вас мини-ошибка Y2K в вашем формате или это не имеет значения?
Проблема с этим форматом в том, что вы видите только фамилию первого автора, а иногда это имя последнего автора, что очень много для вас значит.
@AaronF Пока я не получу статьи, опубликованные авторами с тем же именем, тем же названием и в том же журнале, ровно через 100 лет, это не имеет значения. У меня не так много статей старше 100 лет.
@DmitrySavostyanov В некоторых областях последний автор имеет важное значение. В моей сфере такого не бывает. Конечно, большая часть информации неизбежно теряется при сжатии списка авторов и названия до такой короткой формы, как я описал.
«Мне нравится эта система, потому что я к ней привык». Ну, это должно быть аргументом для любой системы
@infinitezero Вы можете привыкнуть к чему-то и не любить это ... например, вставать до 8 утра

Существует множество программ, которые могут помочь (например, Mendeley ). Я использовал это (и другие), но обнаружил, что это требует больше управления, чем я хотел бы дать.

Лично у меня просто была папка публикаций с вложенными подпапками по разным темам. Затем я бы просто назвал файлы .pdf, используя фамилию первого автора и год публикации, то есть: lastname_2019 .

Я обнаружил, что это имеет несколько преимуществ:

  1. Это легко запомнить. Обсуждая с коллегами, я мог легко сослаться на статью по фамилии в 2019 году . Здорово иметь возможность сделать это легко и помогает вашей репутации. Альтернативой является обсуждение с коллегами, которые смутно помнят содержание статьи, но не могут вспомнить ее название или авторство.
  2. Найти документ легко, например, с помощью Spotlight в macOS. Я просто ввел фамилию, и все их бумаги появились. Также помогает в запоминании фамилии авторов. Я сильно полагался на это и никогда не искал папку публикаций.
  3. Если бы я использовал LaTeX, я мог бы легко вспомнить, какие документы я хотел процитировать, и поскольку я установил ссылку на номер в формате lastname_2019 , у меня не было больше информации для запоминания.

Конечно, если человек публикует несколько статей в год, я просто добавляю букву к доп. Честно говоря, я думаю, что мне пришлось сделать это только один или два раза для моей области.

Для меня это никогда не работало по нескольким причинам: 1) многие документы могут принадлежать разным проектам/подпапкам 2) во многих случаях первый автор не является «самым важным», в честь кого вы его называете? 3) в моей области довольно часто бывает более одной статьи в год
Тогда Mendeley — ваш друг, так как вы можете назначать публикации в разные папки. В моей области первый автор всегда является самым важным, и даже если это не так, я не думаю, что это имеет значение для ссылки, это никоим образом не является присвоением кредита.
Я думаю, что это хорошо работает в некоторых областях, таких как математика. Я сделал что-то очень похожее там. Предположительно, это не очень хорошо работает в других областях, где у большинства статей много авторов, а среднее количество статей в год и исследователь намного больше, чем один.
Я не обязательно имею в виду присвоение кредита, но когда у вас есть признанный профессор с более чем 20 сотрудниками, который пишет 20 статей в год, тогда вы, как сторонний исследователь, вероятно, будете использовать имя лидера группы в качестве ссылки, поскольку это то, что вы бы сделали. помнить. \
Менделей неплохой, но такой фирменный(

Я использую менделей с автоматическим сканированием папок. Я загружаю статью с именем файла типа « SI90234023499-II.pdfdump» в одну из моих отслеживаемых папок, и она автоматически сортируется ~/Literature/FirstAuthor/Year/Journal/Title.pdfи добавляется в базу данных Mendeley. Вы можете настроить расположение каталога из любой комбинации метаданных, но для меня это не имеет особого значения, потому что я все равно получаю доступ к материалам только через приложение Mendeley, поэтому я редко работаю с PDF-файлами напрямую.

Обратите внимание, что Mendeley является частной базой данных. Пользователи таких облачных систем тратят свое время на создание базы данных, которой они не владеют. Эти системы предназначены для жесткой привязки к поставщику. Я предлагаю использовать бесплатные решения с открытым исходным кодом, где сообщество контролирует собственные данные и может исправлять ошибки.
Если бы такая система существовала, я бы ее использовал, но мне еще предстоит найти систему, которая работает для автоматического приема моих документов без ручного вмешательства, надежной очистки информации, автоматического переименования и сохранения PDF-файла и автоматического предоставления его на все мои устройства (2 настольных компьютера, 1 ноутбук, 1 телефон Android, 1 планшет iOS) и будут интегрироваться с MS Word.
@IanSudbery Zotero в сочетании с плагином Zotfile сделает все это, за исключением мобильных устройств и этого интерфейса с Dropbox и т. д. И это с открытым исходным кодом, поэтому вы знаете, что ваши данные никогда не будут заблокированы с помощью Elsevier. Не слишком большая проблема, если вы просто используете его для хранения данных аннотаций, но действительно большая проблема, если вы делаете заметки в системе.

Для книг вы можете использовать Caliber , бесплатную программу управления электронными книгами. Легко использовать.

Согласованный. Calibre для управления файлами и Zotero для ссылок.

Как насчет старого доброго Excel.

  • Начните с именования ваших PDF-документов, используя схему именования, подобную предложенной @gerrit (или какой-либо другой механизм, который приводит к управляемым/узнаваемым именам файлов).
  • Создайте рабочий лист Excel. Сделайте столбец А очень широким. Каждая строка будет представлять один файл
  • Выберите ячейку. Выберите Insertвкладку и нажмитеLink
  • Вставьте полное имя документа (в любом формате) в поле «Текст для отображения».
  • Перейдите к файлу PDF в файловом браузере, выберите нужный файл и нажмите «ОК».

Теперь у вас есть доступный для поиска документ, содержащий названия ваших публикаций и интерактивные ссылки на ваши документы.

Если вы хотите быть необычным, у вас может быть несколько столбцов (дата публикации, авторы (или, возможно, основной автор и другие авторы), название и т. д.). Вставьте несколько заголовков столбцов. Теперь их можно не только искать, но и сортировать и фильтровать (особенно если вы создаете их как таблицу ( поиграйте с Tableкнопкой на Insertвкладке))

Каждый стартап должен подумать: может ли ваш продукт заменить Excel.

Я рекомендую вам назвать документы, как вы говорите, 1.pdf, 2.pdf и иметь соответствующие файлы метаданных 1.txt, 2.txt, которые вы можете структурировать по своему усмотрению.

Тогда решающая часть заключается в следующем: используйте grep(доступно как для Linux, так и для Windows) для поиска по содержимому всех текстовых файлов в этой папке. Это найдет вас, какие текстовые файлы содержат искомые термины.

Поиск так же прост (это покажет, какие текстовые файлы в текущей папке содержат слово «Адамовский»):

grep -r "Adamowski" .

Я думаю, что это самый простой способ.

pdfgrep может быть полезен для этого решения: pdfgrep.org

Есть ли простой метод или, возможно, легкое программное обеспечение, которое я могу использовать, чтобы помочь мне с такой задачей?

Хотя JabRef немного перегружен, он может поддерживать библиографию и переименовывать файлы :

Переименование файлов теперь является частью функции «Очистить записи» (кнопка кисти на панели инструментов или Ctrl + Shift + F7). Затем вы можете переименовывать прикрепленные файлы на основе ключа BibTeX. Вы можете изменить формат (шаблон) в меню «Параметры» → «Установки» → «Импорт», изменив шаблон в разделе «Действие ссылки на файл PDF по умолчанию».

И шаблоны разнообразные , и можно последовательно сокращать названия журналов, заглавия, комбинировать имена авторов, например:

Ключевые шаблоны, связанные с автором

  • [auth]: фамилия первого автора
  • [авторы]: Фамилии всех авторов
  • [authorLast]: фамилия последнего автора

Ключевые шаблоны, связанные с заголовком

  • [shorttitle]: первые 3 слова заголовка без учета служебных слов (см. ниже). Например, отличная статья о JabRef становится AwesomePaperJabref.
  • [veryshorttitle]: первое слово заголовка без учета служебных слов (см. ниже). Например, «Отличная статья по JabRef» становится «Отличной».
  • [camel]: использовать заглавные буквы и соединить все слова заголовка. Например, отличная статья о JabRef становится AnAwesomePaperOnJabref.
  • [название]: Напишите все значимые слова заголовка с заглавной буквы и соедините их. Например, отличная статья о JabRef становится AnAwesomePaperonJabref.

Модификаторы Как правило, модификаторы применяются в том порядке, в котором они указаны. Далее мы представляем список наиболее распространенных модификаторов вместе с кратким пояснением:

  • :abbr: Сокращает текст, созданный именем поля или специальным маркером поля. Будут включены только первый символ и последующие символы после пробела. Например:
    • [journal:abbr] из названия журнала «Journal of Fish Biology» произведет «JoFB».
    • [title:abbr] из заголовка «Отличная статья о JabRef» произведет «AAPoJ».
    • [camel:abbr] из заголовка «Отличная статья о JabRef» произведет «AAPOJ».

Мой метод состоит в том, чтобы назвать каждый файл PDF следующим образом:

year, authors, title.pdf

Например:

2020, Abc Def Ghi, The letters of the alphabet.pdf

Я работаю с Ubuntu и никогда не имел проблем с этими именами файлов, хотя они содержат пробелы и запятые.

Помещение года на первое место облегчает сортировку статей по годам в проводнике.

Помещение заголовка в имя файла позволяет сразу увидеть в проводнике, о чем этот файл.

Вам повезло, если у вас не было проблем с пробелами и запятыми в именах файлов. Это зовет на беду. Как вы транскрибируете имена авторов нелатинскими буквами?
Как вы ограничиваете длину заголовка? Большинство файловых систем и программ имеют очень ограниченную длину имени файла.
@JonasStein нет необходимости указывать точные имена (с нелатинскими символами) или полное название - просто введите достаточное количество названия, чтобы вы понимали, что внутри.