public String assembleTex(AssemblerType at) {
        // auto-prepend headers
        // assembler only handles the individual stories
        String header = FiclyAssembler.texheader;
        if (title != null) {
            // set title field, if present
            header = header.replace("===TITLE===", title);
        }
        if (!authors.isEmpty()) {
            // set authors field, if applicable
            StringBuilder authorSectionSB = new StringBuilder("\\author{");
            for (String author : authors) {
                authorSectionSB.append(author);
                authorSectionSB.append("\\\\ \n");
            }
            authorSectionSB.append("}");
            header = header.replace("===AUTHORS===", authorSectionSB.toString());
            
        }
        StringBuilder sb = new StringBuilder(header);
        switch (at) {
        case depth_first:
            sb.append(new DepthFirstAssembler(start, stories).toTex());
            sb.append("\\end{document}");
            return sb.toString();
        default:
            break;
        }
        return sb.toString();
    }