LINUX.ORG.RU

pdflatex и calibre

 ,


0

2

У меня есть такой документ:

\documentclass[12pt, a4paper]{book}

\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

\title{Мой чудесный заголовок документа}
\author{МиМиМи}

\begin{document}
Простой документ, в котором всего несколько предложений.

Ну а класс у него "книга" - так почему бы и нет?
\end{document}

я генерирую из него .pdf-файл

а затем добавляю в программу calibre.

Моя проблема в том, что в Calibre не видно ни автора, ни названия документа. Что надо сделать?

★★★★
Ответ на: комментарий от Anoxemian

Автор и заголовок вставились,

а год публикации (изготовления) и теги (ключевые слова) - нет (собственно, их нет и в исходнике - не знаю что писа́ть)

Дату вписывал так: \date{\today} (и не сработало)

И ещё есть поле «Topic» - это в какие категории классифицироваться

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 2)
Ответ на: комментарий от Anoxemian

Я ничего не понял, вот мой код:

\documentclass[12pt, a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage[russian]{babel}

\usepackage{titling} 
\title{Мой чудесный заголовок документа}
\author{МиМиМи}
\date{\today}

\usepackage{hyperxmp} 
\AtBeginDocument{
\hypersetup{
pdfauthor=\theauthor ,
pdftitle=\thetitle ,
pdfsubject=MeowMeowMeow ,
pdfkeywords={keyword1,keyword2} ,
unicode=true
}

\pdfinfo {
Topic=MyTopic
}
}

\begin{document}
Основной текст
\end{document}

Всё вставляется (дата, ключевые слова), кроме поля Topic

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Anoxemian

ты миксуешь разные модули.

Это я от безнадёги. Я уже и по отдельности их попробовал и вместе в разных вариантах.

Проблема с Calibre. Неясно, откуда она берёт своё поле Topic. В документации https://ctan.altspu.ru/macros/latex/contrib/hyperref/doc/hyperref-doc.html на hyperref нет поля с таким именем.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Anoxemian

У меня есть Calibre, я им пользуюсь. В Calibre есть классификатор слева, и книжки можно туда помещать по темам. В поле Topic через точку с запятой попадают все темы, куда книжка была расклассифицирована.

Я хочу заполнить это поле заранее. Я понятия не имею, можно ли это в принципе сделать или нет. В спеке pdf я тоже такого не нашел. Но как я понял, в pdf можно вставлять поля с произвольными именами, если как следует постараться. Но это может не помочь. Как именно работает Calibre я сам не знаю, хочу чтобы мне обяснили по коду.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Ну, представь, ты - автор calibre. Тебе надо распихвать источники по #хештегам. Не долго думая, ты придумываешь хэштег Topic и на основании пользовательского exp. распихиваешь. Отображать это в левом классификаторе можешь как пожелает твоя совесть.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

да ты издеваешься. Я не могу себя представить автором Calibre. Если бы я мог, я бы прочитал его исходный код и всё.

Мне не важно как он там что отображает. Всё что мне нужно, чтобы я из Caja перетащил мою .pdf-ку и она сразу попала в нужное место в классификаторе, основываясь на том, что я в ней что-нибудь внутри запишу заранее.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Anoxemian

Возьми рандомную pdf и перетащи

Мне не нужны рандомные .pdf-ки. Я в свои хочу прописать. Ты развёрнуто объясняешь, что не получится. Что там никогда такого не было и для других pdf-ок не работало. И что надо допилить Calibre. Ну ок. Но мне неясно как и что.

Вот как они в библиотеках работают с этими своими УДК и ББК ?

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Да просто - придумывают алгоритм разделения книг. Условно, делишь литературу на «фантастика» и «мануал», грепаешь на основании каких-либо характеристик (или, вообще, отдаешь это на откуп пользователю) на основании этого заводишь классификатор «Topic» и выводишь это слева в UI.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Да, это я уже проделал. Создал дерево слева, отдельно от «идентификаторов».

Руками всё прописывается.

Теперь надо сделать, чтобы работало без рук. Компьютеры для автоматизации нужны это прям вся их суть.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Anoxemian

В .pdf файл можно засунуть два кастомных поля (УДК/ББК), а в calibre можно добавить патч, чтобы он из вычитал и заполнил.

А лучше, конечно, это прямо в идентификаторы допилить.

Особенно если там можно плагины делать (я не знаю).

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Anoxemian

ты даже код вычитать не можешь, а уже патчи предлагаешь

И в чём проблема? Проблема в отсутствии грамотных разработчиков, которые бы сказали «я сделаю это за столько-то золота».

так не работает

Ага, опенсорс вообще не работет, он развлекается.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Проблема в отсутствии грамотных разработчиков, которые бы сказали «я сделаю это за столько-то золота».

Проблема в присутствии дибильных балаболав, которые бы сказали «я высру это за просто так».

UPD. если что, я применил антонимы к твоим словам, но смысл не поменялся.

Anoxemian ★★★★★
()
Последнее исправление: Anoxemian (всего исправлений: 1)
Ответ на: комментарий от Shushundr

У меня получилось заполнить почти все поля которые я пользуюсь, кроме поля Topic

В calibre нет классификатора «topic». Заполнять пользовательские столбцы из метаданных файлов нельзя.

pasquale
()

Теперь я захотел сделать из него PDF/A-документ.

Добавил строки

\usepackage[a-1b,cyrxmp]{pdfx}

\begin{filecontents*}{\jobname .xmpdata}
\Title{\thetitle}
\Author{\theauthor}
\end{filecontents*}

и всё развалилось. Больше не работает (автор и заголовок не добавляются, и макрос \thedate работать перестал).

Судя по тому, что одна из баг была исправлена только в 2019-м году: https://tex.stackexchange.com/questions/473390/encoding-metadata-in-pdf-file-with-pdfx-package мало кто пользуется этими возможностями. Это печально.

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)
Ответ на: комментарий от Shushundr

Кроме того, у меня не получается использовать макрос \sep когда я пытаюсь перечислить список авторов в макросе \title, для того, чтобы потом использовать макрос \thetitle.

«titling package has to be loaded before defining title, author and date»

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

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)

Читал
https://ctan.altspu.ru/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf

И вычитал:
«Currently this interface can be used for the keys pdfauthor, pdftitle, pdfproducer, pdfcreator, pdfsubject and pdfkeywords. If used with a unknown key an empty value is returned.»

Здесь:

  1. отсутствуют CreationData (хотя, наверное, его можно установить через какой-нибудь \pdfinfo);

  2. невозможно добавить УДК и ББК;

Поэтому от использования макроса \hypersetup из пакета \hyperref придётся отказаться. А жаль, потому что он очень удобный, потому что в него можно передавать \theauthor, \thetitle и всё такое.

Вот мой код

\documentclass[12pt, a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage[russian]{babel}

\newcommand{\sep}{\ \&\ }

\usepackage{titling}

\makeatletter
\providecommand{\title}[1]{\def\@title{#1}}
\providecommand{\author}[1]{\def\@author{#1}}
\providecommand{\subject}[1]{\def\@subject{#1}}
\providecommand{\keywords}[1]{\def\@keywords{#1}}

\providecommand{\thetitle}{\@title}
\providecommand{\theauthor}{\@author}
\providecommand{\thesubject}{\@subject}
\providecommand{\thekeywords}{\@keywords}
\providecommand{\thedate}{\@date}
\makeatother

\title{Большое латексное изделие}
\author{Авторка, Т.П.\sep Авторкин, Б.А.}
\subject{системы подготовки документов, стили, шаблоны}
\keywords{изделие,латекс,размер}
\date{\today}

\usepackage{datetime2}

\usepackage{hyperref}

\AfterPreamble{\hypersetup{
  pdfauthor={\theauthor},
  pdftitle={\thetitle},
  pdfsubject={\thesubject},
  pdfkeywords={\thekeywords},
}}

\begin{document}

\maketitle

\section{Введение}

Выведение.

\end{document}
Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)
Ответ на: комментарий от Anoxemian

Попробовал, см. сообщение выше. Не годится, потому что не позволяет помещать УДК, ББК, ISBN и всё такое в метаданные PDF-файла (чтобы потом оттуда их могла вычитать Calibre).

При этом колонка «дата публикации» в Calibre не заполняется (даже если добавить \pdfinfo)

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 2)
Ответ на: комментарий от Shushundr

для .odt документов оно isbn понимает, и pubdate:
https://manual.calibre-ebook.com/calibre.pdf

If this property is detected by
calibre, the following custom properties are recognized (opf.authors overrides document creator):
opf.titlesort
opf.authors
opf.authorsort
opf.publisher
opf.pubdate
opf.isbn
opf.language
opf.series
opf.seriesindex
In addition to this, you can specify the picture to use as the cover by naming it opf.cover (right click, Picture->Options-
>Name) in the ODT. 

calibredb set_metadata -h

Не я один такой в мире!
https://www.mobileread.com/forums/showthread.php?t=258671

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 2)
Ответ на: комментарий от pasquale

Заполнять пользовательские столбцы из метаданных файлов нельзя.

А в списке плагинов есть плагин, которые примерно так делает:

«Review EPUB metadata and put Calibre convert version into custom column»

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)

Теперь рекомендуют использовать
\usepackage{xmpincl}
и там как-то записывать

<rdf:Description rdf:about="...">
  ...
  <prism:isbn>978-5-8114-1111-0</prism:isbn>
  <prism:publicationDate prism:platform=”web”>2007-09-22</prism:publicationDate> 
  ...
</rdf:Description>
Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 2)