(defun guess-TeX-master (filename) "Guess the master file for FILENAME from currently open .tex files." (let (() (candidate nil) (filename (file-name-nondirectory filename))) (save-excursion (dolist (buffer (buffer-list)) (with-current-buffer buffer (let (() (name (buffer-name)) (file buffer-file-name)) (if (and file (string-match "\\.tex$" file)) (progn (goto-char (point-min)) (if (re-search-forward (concat "\\\\input{" filename "}") nil t) (setq candidate file)) (if (re-search-forward (concat "\\\\include{" (file-name-sans-extension filename) "}") nil t) (setq candidate file)))))))) (if candidate (message "TeX master document: %s" (file-name-nondirectory candidate))) candidate))