;; document-latex-setup.el ;; Přidej obsah tohoto souboru do svého ~/.config/doom/config.el ;; ;; Co to dělá: ;; Před každým LaTeX exportem projde buffer, najde Org tabulky ;; které NEMAJÍ #+ATTR_LATEX, spočítá jejich sloupce a vloží: ;; #+ATTR_LATEX: :environment tabularx :width \textwidth :align lXX... ;; (první sloupec levý, zbytek roztažitelný) ;; Pracuje na kopii bufferu — originální soubor se NEMĚNÍ. (defun my/org-count-table-columns (line) "Spočítej počet datových sloupců v Org table LINE." (length (cl-remove-if (lambda (s) (string-match-p "^-*$" (string-trim s))) (cdr (butlast (split-string line "|")))))) (defun my/org-table-attr-latex-spec (ncols) "Vygeneruj column spec pro tabularx: první sloupec l, zbytek Y (centered X)." (concat "l" (make-string (max 0 (1- ncols)) ?Y))) (defun my/org-auto-tabularx (backend) "Automaticky přidej #+ATTR_LATEX tabularx před každou tabulku při LaTeX exportu." (when (org-export-derived-backend-p backend 'latex) (save-excursion (goto-char (point-min)) (while (not (eobp)) (cond ;; Řádek začíná | — může být začátek tabulky ((looking-at "^|") (let ((prev-line (save-excursion (forward-line -1) (buffer-substring-no-properties (line-beginning-position) (line-end-position))))) ;; Je to PRVNÍ řádek tabulky? (předchozí řádek NEzačíná |) (when (not (string-match-p "^|" prev-line)) ;; Chybí #+ATTR_LATEX? (when (not (string-match-p "^#\\+ATTR_LATEX" prev-line)) (let* ((table-line (buffer-substring-no-properties (line-beginning-position) (line-end-position))) (ncols (my/org-count-table-columns table-line)) (spec (my/org-table-attr-latex-spec ncols)) (attr (format "#+ATTR_LATEX: :environment tabularx :width \\textwidth :align %s\n" spec))) (when (> ncols 0) (insert attr)))))) (forward-line)) (t (forward-line))))))) ;; Zaregistruj hook — spustí se před každým exportem (add-hook 'org-export-before-processing-hook #'my/org-auto-tabularx) ;; Volitelně: zapni booktabs styl (horizontal rules v tabulkách) ;; (setq org-latex-tables-booktabs t) ;; ;; Jak použít: ;; 1. Zkopíruj tento obsah do ~/.config/doom/config.el ;; 2. Spusť: doom sync (nebo M-x doom/reload) ;; 3. Exportuj dokument: SPC m e l p ;; Tabulky se automaticky obalí do tabularx — nic nemusíš přidávat ručně. ;; ;; Chceš jiný výchozí column spec? Uprav my/org-table-attr-latex-spec. ;; Například pro "všechny sloupce rovnoměrně": (make-string ncols ?Y)