⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlputils.cpp

📁 wxWidgets 2.8.9 Downloads
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    if (!start && (arg_no == 2))    {      TexOutput(_T("}"));    }    if (!start && (arg_no == 3))     TexOutput(_T(")"), true);    break;  }  case ltPARAM:  {    if (start && (arg_no == 2))    {      long id = NewBlockId();      wxSnprintf(buf, sizeof(buf), _T(" \\hy-%d{%ld}{"), hyBLOCK_BOLD, id);      TexOutput(buf);    }    if (!start && (arg_no == 2))    {      TexOutput(_T("}"));    }    break;  }  case ltCPARAM:  {    if (start && (arg_no == 2))    {      long id = NewBlockId();      wxSnprintf(buf, sizeof(buf), _T(" \\hy-%d{%ld}{"), hyBLOCK_BOLD, id);      TexOutput(buf);    }    if (!start && (arg_no == 2))    {      TexOutput(_T("}"));    }    break;  }  case ltMEMBER:  {    if (!start && (arg_no == 1))      TexOutput(_T(" "), true);    break;  }  case ltLABEL:  {    return false;  }  case ltREF:  {    if (start)    {      wxChar *sec = NULL;      wxChar *refName = GetArgData();      if (refName)      {        TexRef *texRef = FindReference(refName);        if (texRef)        {          sec = texRef->sectionNumber;        }      }      if (sec)      {        TexOutput(sec);      }      return false;    }    break;  }  case ltHELPREF:  case ltHELPREFN:  case ltPOPREF:  {    if (arg_no == 1)    {      if (start)      {        currentBlockId = NewBlockId();        wxSnprintf(buf, sizeof(buf), _T("\\hy-%d{%ld}{"), hyBLOCK_RED_ITALIC, currentBlockId);        TexOutput(buf);      }      else TexOutput(_T("}"));    }    if (arg_no == 2)    {      if (start)      {        wxChar *label = GetArgData();        hyperLinks.Append(currentBlockId, (wxObject *)copystring(label));      }      return false;    }    break;  }  case ltURLREF:  {    if (arg_no == 1)    {      return true;    }    else if (arg_no == 2)    {      if (start)        TexOutput(_T(" ("));      else        TexOutput(_T(")"));      return true;    }    break;  }  case ltITEM:  {    if (start && IsArgOptional())    {      descriptionItemArg = GetArgChunk();      return false;    }    break;  }  case ltTABULAR:  case ltSUPERTABULAR:  {    if (arg_no == 1)    {      if (start)      {        inTable = true;        tableVerticalLineLeft = false;        tableVerticalLineRight = false;        wxChar *alignString = copystring(GetArgData());        // Count the number of columns        noColumns = 0;        int len = wxStrlen(alignString);        if (len > 0)        {          if (alignString[0] == '|')            tableVerticalLineLeft = true;          if (alignString[len-1] == '|')            tableVerticalLineRight = true;        }        for (int i = 0; i < len; i++)          if (isalpha(alignString[i]))            noColumns ++;/*      // Experimental      TexOutput(_T("\\brdrt\\brdrs"));      if (tableVerticalLineLeft)        TexOutput(_T("\\brdrl\\brdrs"));      if (tableVerticalLineRight)        TexOutput(_T("\\brdrr\\brdrs"));*/        // Calculate a rough size for each column//        int tabPos = 80/noColumns;        currentTab = 0;        return false;      }    }    else if (arg_no == 2 && !start)    {      inTable = false;    }    else if (arg_no == 2 && start)      return true;    break;  }  case ltMARGINPAR:  case ltMARGINPAREVEN:  case ltMARGINPARODD:  case ltNORMALBOX:  case ltNORMALBOXD:  {    if (start)    {      TexOutput(_T("----------------------------------------------------------------------\n"), true);      return true;    }    else      TexOutput(_T("\n----------------------------------------------------------------------\n"), true);    break;  }  case ltBIBITEM:  {    wxChar buf[100];    if (arg_no == 1 && start)    {      wxChar *citeKey = GetArgData();      TexRef *ref = (TexRef *)TexReferences.Get(citeKey);      if (ref)      {        if (ref->sectionNumber) delete[] ref->sectionNumber;        wxSnprintf(buf, sizeof(buf), _T("[%d]"), citeCount);        ref->sectionNumber = copystring(buf);      }      wxSnprintf(buf, sizeof(buf), _T("\\hy-%d{%ld}{[%d]} "), hyBLOCK_BOLD, NewBlockId(), citeCount);      TexOutput(buf);      citeCount ++;      return false;    }    return true;  }  case ltTHEBIBLIOGRAPHY:  {    if (start && (arg_no == 1))    {      citeCount = 1;      SetCurrentOutput(Chapters);      SetCurrentOutputs(Contents, Chapters);      long id1 = NewBlockId();      long id2 = NewBlockId();      wxFprintf(Contents, _T("\\hy-%d{%ld}{%s}\n"), hyBLOCK_SMALL_HEADING, id1, ReferencesNameString);      wxFprintf(Chapters, _T("\\hy-%d{%ld}{%s}\n\n\n"), hyBLOCK_LARGE_VISIBLE_SECTION, id2, ReferencesNameString);      wxFprintf(Index, _T("%ld %ld\n"), id1, id2);      SetCurrentOutput(Chapters);      return false;    }    if (!start && (arg_no == 2))    {    }    return true;  }  case ltTWOCOLITEM:  case ltTWOCOLITEMRULED:  {    if (start && (arg_no == 2))      TexOutput(_T("\n    "));    if (!start && (arg_no == 2))      TexOutput(_T("\n"));    return true;  }  /*   * Accents   *   */  case ltACCENT_GRAVE:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('a'):           TexOutput(_T("a"));           break;          case _T('e'):           TexOutput(_T("e"));           break;          case _T('i'):           TexOutput(_T("i"));           break;          case _T('o'):           TexOutput(_T("o"));           break;          case _T('u'):           TexOutput(_T("u"));           break;          case _T('A'):           TexOutput(_T("a"));           break;          case _T('E'):           TexOutput(_T("E"));           break;          case _T('I'):           TexOutput(_T("I"));           break;          case _T('O'):           TexOutput(_T("O"));           break;          case _T('U'):           TexOutput(_T("U"));           break;          default:           break;        }      }    }    return false;  }  case ltACCENT_ACUTE:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('a'):           TexOutput(_T("a"));           break;          case _T('e'):           TexOutput(_T("e"));           break;          case _T('i'):           TexOutput(_T("i"));           break;          case _T('o'):           TexOutput(_T("o"));           break;          case _T('u'):           TexOutput(_T("u"));           break;          case _T('y'):           TexOutput(_T("y"));           break;          case _T('A'):           TexOutput(_T("A"));           break;          case _T('E'):           TexOutput(_T("E"));           break;          case _T('I'):           TexOutput(_T("I"));           break;          case _T('O'):           TexOutput(_T("O"));           break;          case _T('U'):           TexOutput(_T("U"));           break;          case _T('Y'):           TexOutput(_T("Y"));           break;          default:           break;        }      }    }    return false;  }  case ltACCENT_CARET:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('a'):           TexOutput(_T("a"));           break;          case _T('e'):           TexOutput(_T("e"));           break;          case _T('i'):           TexOutput(_T("i"));           break;          case _T('o'):           TexOutput(_T("o"));           break;          case _T('u'):           TexOutput(_T("u"));           break;          case _T('A'):           TexOutput(_T("A"));           break;          case _T('E'):           TexOutput(_T("E"));           break;          case _T('I'):           TexOutput(_T("I"));           break;          case _T('O'):           TexOutput(_T("O"));           break;          case _T('U'):           TexOutput(_T("U"));           break;          default:           break;        }      }    }    return false;  }  case ltACCENT_TILDE:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('a'):           TexOutput(_T("a"));           break;          case _T(' '):           TexOutput(_T("~"));           break;          case _T('n'):           TexOutput(_T("n"));           break;          case _T('o'):           TexOutput(_T("o"));           break;          case _T('A'):           TexOutput(_T("A"));           break;          case _T('N'):           TexOutput(_T("N"));           break;          case _T('O'):           TexOutput(_T("O"));           break;          default:           break;        }      }    }    return false;  }  case ltACCENT_UMLAUT:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('a'):           TexOutput(_T("a"));           break;          case _T('e'):           TexOutput(_T("e"));           break;          case _T('i'):           TexOutput(_T("i"));           break;          case _T('o'):           TexOutput(_T("o"));           break;          case _T('u'):           TexOutput(_T("u"));           break;          case _T('y'):           TexOutput(_T("y"));           break;          case _T('A'):           TexOutput(_T("A"));           break;          case _T('E'):           TexOutput(_T("E"));           break;          case _T('I'):           TexOutput(_T("I"));           break;          case _T('O'):           TexOutput(_T("O"));           break;          case _T('U'):           TexOutput(_T("U"));           break;          case _T('Y'):           TexOutput(_T("Y"));           break;          default:           break;        }      }    }    return false;  }  case ltACCENT_DOT:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('a'):           TexOutput(_T("a"));           break;          case _T('A'):           TexOutput(_T("A"));           break;          default:           break;        }      }    }    return false;  }  case ltACCENT_CADILLA:  {    if (start)    {      wxChar *val = GetArgData();      if (val)      {        switch (val[0])        {          case _T('c'):           TexOutput(_T("c"));           break;          case _T('C'):           TexOutput(_T("C"));           break;          default:           break;        }      }    }    return false;  }  default:  {    return DefaultOnArgument(macroId, arg_no, start);  }  }  return true;}bool XLPGo(void){  xlpBlockId = 0;  if (!InputFile.empty() && !OutputFile.empty())  {    Contents = wxFopen(TmpContentsName, _T("w"));    Chapters = wxFopen(_T("chapters.xlp"), _T("w"));    Sections = wxFopen(_T("sections.xlp"), _T("w"));    Subsections = wxFopen(_T("subsections.xlp"), _T("w"));    Subsubsections = wxFopen(_T("subsubsections.xlp"), _T("w"));    Index = wxFopen(_T("index.xlp"), _T("w"));    // Insert invisible section marker at beginning    wxFprintf(Chapters, _T("\\hy-%d{%ld}{%s}\n"),                hyBLOCK_INVISIBLE_SECTION, NewBlockId(), _T("\n"));    wxFprintf(Contents, _T("\\hy-%d{%ld}{%s}\n\n"),//                hyBLOCK_LARGE_HEADING, NewBlockId(), "\n\n%s\n\n", ContentsNameString);                hyBLOCK_LARGE_HEADING, NewBlockId(), ContentsNameString);    SetCurrentOutput(Chapters);    wxFprintf(Index, _T("\n\\hyindex{\n\"%s\"\n"),             contentsString ? contentsString : _T("WXHELPCONTENTS"));    TraverseDocument();    wxNode *node = hyperLinks.GetFirst();    while (node)    {      long from = node->GetKeyInteger();      wxChar *label = (wxChar *)node->GetData();      wxNode *otherNode = hyperLabels.Find(label);      if (otherNode)      {        long to = (long)otherNode->GetData();        wxFprintf(Index, _T("%ld %ld\n"), from, to);      }      node = node->GetNext();    }    wxFprintf(Index, _T("}\n"));    fclose(Contents); Contents = NULL;    fclose(Chapters); Chapters = NULL;    fclose(Sections); Sections = NULL;    fclose(Subsections); Subsections = NULL;    fclose(Subsubsections); Subsubsections = NULL;    fclose(Index); Index = NULL;    if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);    if (!wxRenameFile(TmpContentsName, ContentsName))    {      wxCopyFile(TmpContentsName, ContentsName);      wxRemoveFile(TmpContentsName);    }    wxConcatFiles(_T("chapters.xlp"), _T("sections.xlp"), _T("tmp2.xlp"));    wxConcatFiles(_T("tmp2.xlp"), _T("subsections.xlp"), _T("tmp1.xlp"));    wxConcatFiles(_T("tmp1.xlp"), _T("subsubsections.xlp"), _T("tmp2.xlp"));    wxConcatFiles(_T("tmp2.xlp"), _T("index.xlp"), OutputFile);    wxRemoveFile(_T("tmp1.xlp"));    wxRemoveFile(_T("tmp2.xlp"));    wxRemoveFile(_T("chapters.xlp"));    wxRemoveFile(_T("sections.xlp"));    wxRemoveFile(_T("subsections.xlp"));    wxRemoveFile(_T("subsubsections.xlp"));    wxRemoveFile(_T("index.xlp"));    return true;  }  return false;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -