
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Overview
The ofce package is an R package for creating scientific documents following OFCE (Observatoire français des conjonctures économiques) standards. It provides: - ggplot2 themes and color palettes following OFCE/Revue graphical standards - Quarto templates for working papers, blogs, presentations, and websites - French-language formatting utilities - Integration with marquee for advanced text rendering
The package is primarily for French economic research publications, with French as the default language.
Development Commands
Building and Testing
# Install package in development mode
devtools::load_all()
# Build documentation
devtools::document()
# Build and check package
devtools::check()
# Build pkgdown site
pkgdown::build_site()
# Install from local source
devtools::install()Common Development Tasks
# Test a specific function interactively
devtools::load_all()
library(tidyverse)
# Your test code here
# Run examples from a function
devtools::run_examples()
# Check package for CRAN compliance
devtools::check()Architecture
Core Components
Quarto Templates System (R/quarto.R, inst/extdata/templates/) - setup_quarto(): Installs OFCE Quarto extensions to a project - setup_wp(), setup_blog(), setup_graph(), setup_pres(): Initialize specific document types with templates - Templates stored in inst/extdata/templates/ (blog, graph, presentation, website, workingpaper) - Extensions pulled from ofce/ofce-quarto-extensions repository
Theme System (R/theme_ofce.R) - theme_ofce(): Main ggplot2 theme for OFCE graphics following Revue de l’OFCE standards - theme_ofce_void(): Simplified theme for maps and minimal graphics - Supports both marquee (advanced markdown text rendering) and standard ggplot2 text elements - Configurable via global options: ofce.base_size, ofce.base_family, ofce.marquee, ofce.background_color
Caption System (R/ofce_caption.R) - ofce_caption(): Creates standardized captions for ggplot2 graphics with source, note, lecture, champ, code - ofce_caption_gt(): Caption system for gt tables - dernier_point(): Formats “last known data point” dates in French or English - Supports glue string interpolation and marquee markdown transformations (x → superscript, x → subscript)
Palette System (multiple files) - R/ofce_palette*.R: Color palettes (main, sequential, diverging, country-specific) - R/scale_color_pays.R: Country-specific color scales - Data stored in inst/palette.ofce.rda
Graph Export (R/graph2xxx.R) - graph2png(), graph2svg(), graph2pptx(): Export graphics in various formats - Handles ggplot2 and tmap objects - Default size: 18cm width, 4:3 ratio - Uses showtext for proper font rendering at high DPI (default 600)
Formatting Utilities (R/formate.R) - fmt_val(): Format numbers in French style (comma as decimal, space as thousands separator) - fmt_pct(): Format percentages - fmt_mds(): Format billions of euros (Milliards d’euros)
Initialization System (R/init_qmd.R, inst/rinit.r) - init_qmd(): Sources project-specific or package rinit.r at document start - pathify(): Resolves paths from project root (paths starting with /) - Default rinit.r sets up fonts, themes, knitr options, common libraries, and French locale
Key Design Patterns
Global Options The package heavily uses R options for configuration: - ofce.base_size: Base font size (default 12) - ofce.base_family: Font family (default “Open Sans”) - ofce.marquee: Enable marquee text rendering (default TRUE) - ofce.background_color: Background color (default “transparent”) - ofce.caption.*: Caption formatting options (wrap, lang, ofce branding, glue interpolation)
Font System - Uses Open Sans as default font (included in inst/fonts/) - Relies on showtext/sysfonts for rendering - systemfonts used to register fonts in rinit.r
Marquee vs Standard Text - When ofce.marquee = TRUE: Uses marquee::element_marquee() for advanced markdown rendering in ggplot2 - When ofce.marquee = FALSE: Falls back to standard ggplot2::element_text() - This dual system allows for rich text formatting while maintaining compatibility
French Language Defaults - All user-facing text defaults to French - Date formatting uses French locale - Caption labels: “Source”, “Lecture”, “Note”, “Champ”, “Code”, “Dernier point connu” - Most functions have lang parameter for English output
Important Files
-
DESCRIPTION: Package metadata, dependencies (requires R >= 4.2, Quarto CLI) -
inst/rinit.r: Default initialization script sourced byinit_qmd() -
inst/extdata/templates/: Quarto document templates -
inst/fonts/: OpenSans font files -
_pkgdown.yml: Documentation website configuration -
.Rbuildignore: Files to exclude from package builds
Common Workflows
Adding a New Graphical Theme Element
- Edit
R/theme_ofce.R - Update both marquee and non-marquee versions
- Test with
devtools::load_all()and create example plots - Document changes and rebuild with
devtools::document()
Creating a New Quarto Template
- Add template files to
inst/extdata/templates/[type]/ - Create setup function in
R/quarto.R(e.g.,setup_[type]()) - Update
setup_quarto()documentation to mention new format - Test installation with
setup_quarto()in a test directory
Dependencies
Critical Dependencies - ggplot2 >= 4.0.0: Core graphics system - marquee >= 1.2.0: Advanced text rendering - gt >= 1.1.0: Table formatting - quarto: Document rendering (requires Quarto CLI installed) - showtext/sysfonts: Font rendering
Data Processing - tidyverse >= 2.0.0 (dplyr, tidyr, purrr, stringr) - data.table: High-performance data manipulation
Utility - glue: String interpolation - fs: File system operations - lubridate: Date handling
Notes
- The package website is hosted at https://ofce.github.io/ofce/
- Documentation includes extensive vignettes for different chart types, Quarto usage, and graphic standards
- This is a specialized package for OFCE institutional use, not intended for CRAN
- Uses CC BY 4.0 license