## heading + fenced code block. Uses file.language (FileBase; set by detect_language()). Exception: we do output the header (and empty block if needed) when file content is empty. Caller must not pass null file.