免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

请教怎么自动识别documentclass

如题。因为之前打了几个文档,还有一些书,觉得那些包这篇引入了,那篇又没引入,不太方便,现在就把这些包都做成一个base.tex,然后想这样引入:
  1. \documentclass[10pt]{article}
  2. \input{base}
  3. \begin{document}
  4. \end{document}
复制代码
然后在base.tex里有一个:
\renewcommand{\chaptername}{}

这个只能在book类型的文档中使用,能不能类似下面这样:
\if documentclass=book
\renewcommand{\chaptername}{}
\fi

让这个base.tex在book和article里都能直接引用,其它的还有一些对chapter的设置也是,都想放到那个if里。这个要怎么做?
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

那你可以通过判断 \chapter 是否存在来确定是不是 article

举个简单栗子:
  1. \documentclass{article}
  2. \newif\ifart
  3. \ifx\chapter\undefined\arttrue\fi
  4. \begin{document}
  5. the document class is
  6. \ifart
  7. article
  8. \else
  9. not article
  10. \fi
  11. \end{document}
复制代码
将文档类换成 book 就会有不同结果。

TOP

回复 2# kuing

谢谢,原来这么多if类型,经过2楼提示,在网上找到一个ifdefined
不过还有些地方不太明白,猜测这个ifdefined应该是判断chapter是否定义过,如果定义过就把中间的执行了,但我下面的代码并不能运行。如果把\ifdefined\chapter改成\ifdefined\chaptername,这样就能成功运行了,也确实是我需要的效果:在article里就不管chapter了,在book里才使用定义的样式。那这个\chapter到底在哪定义过呢?为什么article里也找到它了?
  1. \documentclass[10pt]{article}
  2. \usepackage[small,center,pagestyles]{titlesec}

  3. \ifdefined\chapter
  4. \titleformat{\chapter}[hang]{\Large\bfseries}{\chaptername}{1em}{}
  5. \renewcommand{\chaptername}{}
  6. \fi
  7. \begin{document}
  8. \tableofcontents

  9. \chapter{测试章}
  10. \section{测试节}
  11. 测试文本
  12. \end{document}
复制代码

TOP

返回列表 回复 发帖