Manual de usuario de calibre, Publicación 2.73.0
Funciones de plantilla definidas por el usuario
Puede añadir funciones propias al procesador de plantillas. Dichas funciones están escritas en python y pueden usarse
en cualquiera de los tres modos de programación de plantillas. Las funciones se añaden en Preferencias > Avanzado
> Funciones de plantilla. Las instrucciones se muestran en el correspondiente cuadro de diálogo.
Notas especiales para plantillas de guardado o envío
Cuando una plantilla se usa como plantilla de «guardado a disco» o de «envío a dispositivo», ocurre un procesado
especial. Los valores de los campos se sanean, eliminando caracteres especiales para los sistemas operativos por
guiones bajos, incluyendo barras. Esto significa que el texto de los campos no puede usarse para crear carpetas. Sin
embargo, las barras no se modifican en los textos de prefijo o sufijo, por lo que las barras en estos textos harán que se
creen carpetas. Gracias a esto, es posible crear estructuras de carpetas de profundidad variable.
Por ejemplo, supongamos que quiere una estructura de carpetas serie/índice de serie - título, con la salvedad de que si
la serie no existe el título debe estar en la carpeta superior. La plantilla para conseguir esto es:
{series:||/}{series_index:|| - }{title}
La barra y el guión sólo aparecen si la serie no está vacía.
La función lookup() nos permite realizar un procesado aún más complejo. Por ejemplo, supongamos que si un
libro tiene una serie, entonces queremos una estructura de carpetas serie/índice de serie - título. Si el libro no tiene
una serie, entonces queremos la estructura género/orden de autor/título. Si el libro no tiene género, queremos que use
«Desconocido». Queremos seguir dos caminos completamente distintos según el valor de la serie.
Para lograr esto:
1. Creamos un campo compuesto (démosle el nombre de búsqueda #AA) que contiene
{series}/{series_index} -{title}. Si la serie no está vacía, esta plantilla produce serie/número_de_serie - título.
2. Creamos un campo compuesto (démosle el nombre de búsqueda #BB) que contenga
{#genre:ifempty(Desconocido)}/{author_sort}/{title}. Esta plantilla produce
género/orden de autor/título, donde un género vacío se sustituye por Desconocido.
3. Establecemos la plantilla de guardado en {series:lookup(.,#AA,#BB)}. Esta plantilla elige el
campo compuesto #AA si la serie no está vacía y el campo compuesto #BB si la serie está vacía. Obtenemos
por lo tanto dos rutas de guardado completamente diferentes según el campo series esté o no vacío.
Plantillas y controles de metadatos
Los paneles de conexiones se usan para cambiar los metadatos escritos en los libros durante las operaciones de guardado en disco y de envío a dispositivo. Un panel de conexiones le permite especificar una plantilla para suministrar los
datos que se escribirán en los metadatos del libro. Puede usar los paneles de conexiones para modificar los siguientes
campos: authors, author_sort, language, publisher, tags, title, title_sort. Esa función es útil para los que quieren usar
metadatos diferentes en los libros de los dispositivos, para solucionar problemas de ordenación o de visualización.
Cuando cree un panel de conexiones, especifique el formato y dispositivo para los que se usará. Hay un dispositivo
especial «save_to_disk», que se usa para guardar formatos (en lugar de enviarlos a un dispositivo). Una vez que ha
elegido el formato y dispositivo, elija los campos de metadatos para cambiar, y suministre plantillas para obtener los
nuevos valores. Estas plantillas están conectadas con sus campos de destino, de ahí el nombre panel de conexiones.
Por supuesto, puede usar columnas compuestas en estas plantillas.
Cuando un panel de conexiones pueda aplicarse (servidor de contenido, guardado en disco o envío a dispositivo),
calibre busca los paneles definidos para elegir el correcto según el formato y dispositivo. Por ejemplo, para encontrar
176
Capítulo 1. Secciones