1 /*************************************************************************** 2 latexcmd.h 3 ---------- 4 date : Jul 25 2005 5 version : 0.20 6 copyright : (C) 2005 by Holger Danielsson 7 email : holger.danielsson@t-online.de 8 ***************************************************************************/ 9 10 /*************************************************************************** 11 * * 12 * This program is free software; you can redistribute it and/or modify * 13 * it under the terms of the GNU General Public License as published by * 14 * the Free Software Foundation; either version 2 of the License, or * 15 * (at your option) any later version. * 16 * * 17 ***************************************************************************/ 18 19 // kommandos mit weiteren Parametern 20 21 #ifndef LATEXCMD_H 22 #define LATEXCMD_H 23 24 #include <QObject> 25 #include <QStringList> 26 #include <QMap> 27 28 #include <kconfig.h> 29 30 class KileInfo; 31 32 namespace KileDocument 33 { 34 35 const int MaxEnvAttr = 8; 36 const int MaxCmdAttr = 5; 37 38 enum CmdAttribute { 39 CmdAttrNone = 0, // unknown 40 CmdAttrAmsmath = 1, CmdAttrMath = 2, CmdAttrList = 4, CmdAttrTabular = 8, CmdAttrVerbatim = 16, // environments 41 CmdAttrLabel = 32, CmdAttrReference = 64, CmdAttrCitations = 128, CmdAttrIncludes = 256, // commands 42 CmdAttrBibliographies = 512 //commands - continue 43 }; 44 45 class LatexCmdAttributes 46 { 47 public: 48 bool standard; 49 CmdAttribute type; 50 bool starred; 51 bool cr; 52 bool mathmode; 53 bool displaymathmode; 54 QString tabulator; 55 QString option; 56 QString parameter; 57 }; 58 59 class LatexCommands : public QObject 60 { 61 Q_OBJECT 62 63 public: 64 LatexCommands(KConfig *config, KileInfo *info); ~LatexCommands()65 ~LatexCommands() {}; 66 envGroupName()67 QString envGroupName() { 68 return m_envGroupName; 69 } cmdGroupName()70 QString cmdGroupName() { 71 return m_cmdGroupName; 72 } 73 QString configString(LatexCmdAttributes &attr,bool env); 74 75 bool isMathEnv(const QString &name); isListEnv(const QString & name)76 bool isListEnv(const QString &name) { 77 return isType(name,'l'); 78 } isTabularEnv(const QString & name)79 bool isTabularEnv(const QString &name) { 80 return isType(name,'t'); 81 } isVerbatimEnv(const QString & name)82 bool isVerbatimEnv(const QString &name) { 83 return isType(name,'v'); 84 } 85 isLabelCmd(const QString & name)86 bool isLabelCmd(const QString &name) { 87 return isType(name,'L'); 88 } isReferenceCmd(const QString & name)89 bool isReferenceCmd(const QString &name) { 90 return isType(name,'R'); 91 } isCitationCmd(const QString & name)92 bool isCitationCmd(const QString &name) { 93 return isType(name,'C'); 94 } isInputCmd(const QString & name)95 bool isInputCmd(const QString &name) { 96 return isType(name,'I'); 97 } 98 99 bool isStarredEnv(const QString &name); 100 bool isCrEnv(const QString &name); 101 bool isMathModeEnv(const QString &name); 102 bool isDisplaymathModeEnv(const QString &name); 103 bool needsMathMode(const QString &name); 104 QString getTabulator(const QString &name); 105 106 void commandList(QStringList &list, uint attr, bool userdefined); 107 bool commandAttributes(const QString &name, LatexCmdAttributes &attr); 108 109 void resetCommands(); 110 111 private: 112 113 KConfig *m_config; 114 KileInfo *m_ki; 115 116 QString m_envGroupName, m_cmdGroupName; 117 QMap<QString,QString> m_latexCommands; 118 119 void addUserCommands(const QString &name, QStringList &list); 120 void insert(const QStringList &list); 121 122 QString getValue(const QString &name); 123 124 125 bool isUserDefined(const QString &name); 126 bool isType(const QString &name, QChar ch); 127 QString getAttrAt(const QString &name, int index); 128 QChar getAttrChar(CmdAttribute attr); 129 CmdAttribute getCharAttr(QChar ch); 130 131 }; 132 133 134 } 135 136 #endif 137