a5-coin

Génère des listes de contrôle de collection de pièces de monnaie prêtes à imprimer au format A5 pour classeur Filofax, en PDF.

Qu'est-ce que a5-coin ?

Cette compétence génère des listes de contrôle de collection de pièces de monnaie (checklists) prêtes à imprimer au format A5 pour classeur Filofax. Elle s'active automatiquement à la demande d'un utilisateur souhaitant une liste imprimable, un insert de classeur, un PDF A5, ou toute combinaison de mots-clés liés aux pièces, à l'impression, au classeur ou au PDF. Utile pour des collectionneurs numismates qui veulent organiser leur collection sur papier, elle gère l'export Numista et le recoupement avec une liste maîtresse de séries. La compétence applique des règles de formatage précises pour ReportLab : marges compatibles perforation Filofax 6 trous, police Carlito (Calibri-compatible), conception en niveaux de gris optimisée pour les imprimantes laser, et dispositions de lignes soignées (taille uniforme de la police 11pt, alternance de fonds de ligne). Le PDF est sauvegardé localement, avec un rendu visuel (pdf2image) pour contrôle qualité avant livraison.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cercit/AI-Skills/tree/main/a5-coin

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Générateur de Liste de Contrôle PDF A5 pour Pièces de Monnaie

Quand l'utiliser

  • L'utilisateur souhaite une liste de contrôle de collection de pièces imprimable
  • L'utilisateur mentionne A5, Filofax, classeur ou pages d'agenda pour pièces
  • L'utilisateur veut recouper un export Numista avec une liste maîtresse de séries
  • L'utilisateur itère sur un PDF de liste de contrôle de pièces déjà généré

Configuration de Page

from reportlab.lib.pagesizes import A5
PAGE_W, PAGE_H = A5  # 148mm x 210mm (419.53 x 595.28 pts)

LEFT_M = 18*mm    # PLUS LARGE — dégage la perforation Filofax 6 trous
RIGHT_M = 6*mm
TOP_M = 9*mm
BOT_M = 8*mm
USABLE_W = PAGE_W - LEFT_M - RIGHT_M  # ~124mm

Guides de Perforation 6 Trous

Dessiner sur chaque page. Positions standard des trous Filofax A5 depuis le bord supérieur :

HOLE_POSITIONS_MM = [19, 51, 70, 140, 159, 191]
for h in HOLE_POSITIONS_MM:
    y = PAGE_H - h*mm
    c.setStrokeColor(HexColor("#CCCCCC"))
    c.setLineWidth(0.25)
    c.circle(4.5*mm, y, 2.2*mm, stroke=1, fill=0)

Police

Utiliser Carlito (compatible métrique avec Calibri, gratuite sous licence SIL Open Font License). Sous Linux, se trouve généralement à :

/usr/share/fonts/truetype/crosextra/Carlito-Regular.ttf
/usr/share/fonts/truetype/crosextra/Carlito-Bold.ttf
/usr/share/fonts/truetype/crosextra/Carlito-Italic.ttf

Sous Windows ou macOS, télécharger Carlito depuis Google Fonts et pointer vers ces fichiers.

Enregistrer les trois variantes. Ne jamais basculer vers Helvetica : la disposition ci-dessous est calibrée pour les métriques de style Calibri.

Règles Typographiques (CONTRAINTES FERMES)

ÉlémentPoliceTailleNotes
Titre de couvertureCarlito-Gras20ptCentré dans une bannière noire
Sous-titre de couvertureCarlito-Gras16ptSous le titre
En-têtes de sectionCarlito-Gras8.5-9ptBlanc sur barre noire
En-têtes de colonnesCarlito-Gras7.5ptGris, au-dessus de la ligne de séparation
Texte du corps — TOUTES les colonnesCarlito / Carlito-Gras11ptUniforme sur Nom, Période, Maintenant
Ligne de détail collectionnéCarlito-Italique8.5ptGris, en dessous de la ligne collectionnée
Pied de pageCarlito6ptNuméro de page + nom de la liste
Colonne valeur facialeCarlito9ptAligné à droite, abrégé (5Y, 10Y, 1J)

Critique : Garder les colonnes Nom, Période et Maintenant à la MÊME taille de police (11pt). Des tailles mélangées donnent un aspect peu professionnel sur une page imprimée.

Disposition des Lignes

ROW_H = 16-18      # pts — espacement généreux entre les lignes
SEC_H = 17          # hauteur de la barre d'en-tête de section
COL_H = 13          # hauteur de l'en-tête de colonne
COLLECTED_EXTRA = 11 # hauteur supplémentaire pour la ligne de détail sur les lignes collectionnées
  • Dessiner une ligne de séparation subtile (0.2pt, #DDDDDD) en bas de chaque ligne
  • Alterner les fonds de ligne : chaque ligne paire reçoit un remplissage #EBEBEB
  • Lignes collectionnées : texte en gras + coche dans la case à cocher

Positions des Colonnes (depuis LEFT_M)

COL_CK = 0          # case à cocher
COL_YR = 11         # année
COL_NM = 36         # nom de la pièce (colonne principale)
# Colonnes de droite — pousser vers la droite pour éviter le chevauchement avec le texte de période
COL_ERA = 84*mm     # marqueur d'époque (B/P/N) ou valeur faciale
COL_NOW = 89*mm     # état actuel / information secondaire

Leçon clé : Les chaînes de date/période comme "300 BCE-1279" font ~28mm de large en 11pt. Le marqueur d'époque et la colonne MAINENANT doivent COMMENCER après 84mm pour éviter le chevauchement. Ceci a été corrigé après plusieurs itérations.

Conception en Niveaux de Gris (OBLIGATOIRE)

Conçu pour une imprimante laser en niveaux de gris. Ne jamais se fier à la couleur pour le sens.

Élément visuelApproche en niveaux de gris
Surbrillance ligne collectionnéeHachures diagonales (pas de remplissage couleur)
En-têtes de sectionTexte blanc sur barre noire unie
Lignes alternées#EBEBEB vs blanc
Indicateurs d'époqueLettres textuelles (B/P/N) pas de points de couleur
Marques d'atelier collectionnéesGras vs poids normal (pas de couleur)
Cases à cocherCoche dessinée avec des lignes, pas d'Unicode

Implémentation des hachures :

def hatch(c, x, y, w, h):
    c.saveState()
    p = c.beginPath(); p.rect(x, y, w, h)
    c.clipPath(p, stroke=0)
    c.setStrokeColor(HexColor("#CCCCCC"))
    c.setLineWidth(0.35)
    for i in range(-int(h), int(w+h), 5):
        c.line(x+i, y, x+i+h, y+h)
    c.restoreState()

Coche (pas de X, pas d'Unicode) :

c.setStrokeColor(BLK); c.setLineWidth(1.2)
cx = LEFT_M + COL_CK + 1; cy = ty - 1
c.line(cx+2, cy+4, cx+4, cy+1.5)
c.line(cx+4, cy+1.5, cx+8, cy+7.5)

Flux de Pages (Continu)

Ne jamais donner sa propre page à chaque section. Les sections s'enchaînent en continu. Les petites sections (3-5 éléments) doivent tenir sur la même page que la queue de la section précédente.

# Empêcher les orphelins : l'en-tête de section a besoin d'en-tête + en-tête_colonne + 1 ligne minimum
if item_type == 'section_header':
    needed = h + COL_H + 2 + ROW_H + 4
    if y - needed < BOT_M:
        y = new_page(c)

Structure de la Page de Couverture

  1. Bannière noire avec titre (20pt) et sous-titre (16pt)
  2. Ligne de sous-titre sous la bannière (12pt, gris)
  3. Règle horizontale
  4. Boîte de statistiques (fond #EBEBEB) : "Total : X Possédé : Y Besoin : Z" (14pt gras)
  5. Pourcentage de couverture (11pt, gris)
  6. Nom du collectionneur (14pt gras) + pseudo Numista (11pt)
  7. Section légende (si applicable)
  8. Résumé de série avec compteurs alignés à droite

À NE PAS INCLURE

  • Page de notes vierge séparée (gaspillage de papier)
  • Éléments dépendants de la couleur
  • Coches ou caractères spéciaux Unicode (problèmes de couverture de police)
  • Tailles de police inférieures à 7pt pour un élément quelconque
  • Plus d'une page d'espace blanc n'importe où dans le document

Sortie

Enregistrer le PDF à un emplacement accessible par l'utilisateur (sur claude.ai : /mnt/user-data/outputs/ et appeler present_files ; dans Claude Code : le dossier de travail). Rendre les pages avec pdf2image pour un contrôle qualité visuel avant livraison.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés