************************************************************************
                        TeX DLL for Windows 95/NT
                               TeX 3.14159
                             ASCII pTeX 2.1.5
                            Web2c version 7.0
                             DLL version 1.0.2
                  Copyright (C) 1997, Kazunori Asayama

                          AvP[VJ

************************************************************************

1). ͂߂

  TeX DLL pAvP[VvO̊J@ɂĐ
B

  AvP[V̊JɕKvȃwb_t@CC|[gCu
TeX DLL ̃CXg[̃TufBNg develop Ɋ܂܂Ă܂B


2). TeX DLL pvO̊J

  TeX DLL ́AGUI ̊Ĵ߂Ɉȉ̂悤ȋ@\pӂĂ܂BȂA
ȒP̂߁AIWi TeX ɂĂ̂݋LĂ܂Å
 `TeX' ̕Kvɉ PTeX ɓǂ݊ĉB

  a). 

      HTeX WINAPI TeXInitialize(LPFTeXCallbackProc lpfCallback,
	                        LPVOID lpCallbackData,
                                LPCSTR lpcszWorkDir)

      又̂߂̏sȂ܂B又ȂOɁuv
      ̊֐ĂяoKv܂B
      ̊֐Ԃ|C^͈ȍ~̊֐ĂтŎg܂̂
      ǂɋLĂĉB

      :

         LPFTeXCallbackProc lpfCallback;

          DLL  UI Ƃ̊Ԃ̏̂߂ DLL Ăяo֐łB
          ڍׂ͌q܂B̒l NULL ̏ꍇɂ̓ftHg̊֐ (Ȃ)
          p܂B̂ƂÄ lpCallbackData ͖܂B

         LPVOID lpCallbackData;

          lpfCallback  DLL  call 鎞ɈƂēn܂B
          ̈ TeX DLL ł͉߂܂B lpfCallback ŕKvȃf[^
          |C^^ĉB

          lpfCallback ́AAvP[V TeXInitialize() Ăяo
          XbhƓXbhĂ΂Ƃ͌܂
          (TeX DLL IɎgpXbh𐶐A
          Ă΂邱Ƃ܂)B]āAlpCallbackData Ƃ
          Lȃ|C^^ꍇɂ́AX^bNɊmۂꂽ
          IuWFNgւ̃|C^͓nȂ悤ɂĂ
          (Ȃ炸 Heap ȂǁAXbh܂ŗLȗ̈ɊmۂȂ
          ȂȂƂƂł)B

         LPCSTR lpcszWorkDir

           ƃfBNgBTeX DLL ͎又ȂƂɃJg
           fBNgŎw肳ꂽ lpcszWorkDir Ɉړ܂ (ɂ
           fBNg̈ړ͂Ȃ܂BJgfBNg
           lpcszWorkDir Ɉړꂽ̂悤Ƀt@C̓o͂Ȃ܂)B

           ƃfBNgvZX̃JgfBNgł悢ꍇɂ́A
           lpcszWorkDir Ƃ NULL nĂB

      Ԓl:

        sReLXgBl DLL Iɗp邾ł̂
        ̈ӖɂĒmKv͂܂ (Ӑ}IɁAm邱Ƃ
        oȂ悤ɂĂ܂BƂ͂A\[XJĂ܂̂
        m邱Ƃ͉\Ȃ̂łATeX DLL ̃o[Wɍ\قȂ
        lĂ)B

        Ɏsꍇɂ NULL Ԃ܂̂ł̃`FbN
        YȂ悤ɂĉB

  b). 又

      LONG WINAPI TeXMain(HTeX hTeX, LONG lArgc, LPCSTR lpcszArgv[])
      LONG WINAPI TeXVaMain(HTeX hTeX, LPCSTR lpcszProgName, ...)

      C֐łBTeXMain  C  main ֐Ɠl̈Ƃ܂B
      TeXVaMain ͉ψłłB

      :

         HTeX hTeX;

          TeXInitialize() ֐̕Ԓln܂B

         LONG lArgc;
         LPCSTR lpcszArgv[];

           CUI ł TeX łƂ̃R}hCn܂B

           Ⴆ΁A

             COMMAND-PROMPT> initex \input plain.tex \dump

           ɑ鏈ꍇɂ́A

             lArgc = 2;
             lpcszArgv[0] = "initex";
             lpcszArgv[1] = "\input plain.tex \dump";

           ƂāATeXMain() ֐Ăяo܂BlpcszArgv[0] ɂ́AR}h
           (Ⴆ "initex") w肵܂B VirTeX ł
            lpcszArgv[0] ɂftHg̃tH[}bgt@C
           (&format  w肳Ȃꍇ̃tH[}bgt@C) 肳
           ܂B

           ftHgł lpcszArgv[0]  "initex" ̏ꍇɂ IniTeX ƂāA
           ȊÔƂɂ VirTeX Ƃē삵܂B
           "initex" ȊȌꍇɂ IniTeX Ƃē삳ꍇɂ́A
           lpcszArgv[1]  "--ini" Ƃ^ĂB

             lArgc = 3;
             lpcszArgv[0] = "myinitex";
             lpcszArgv[1] = "--ini";
             lpcszArgv[2] = "\input plain.tex \dump";

           IniTeX Ƃē삳ꍇɂ͏ "--ini" w肷悤ɂ
           ̂łB

         LPCSTR lpcszProgName;
         ...

           lpcszProgName ɂ̓vO (argv[0] ɑ) w肵܂B
           ϕɂ͂ȊÖ()w肵܂Bϕ̍Ō
           NULL Ń^[~l[g܂B

           Ƃ΁A

             COMMAND-PROMPT> initex \input plain.tex \dump

           ɑ鏈ꍇɂ́A

             TeXVaMain(hTeX, "initex", "\\input plain.tex \\dump", NULL);

           ̂悤ɂ̊֐Ăяo܂B

      Ԓl:

          ɏIꍇɂ 0 Ԃ܂B
          ȊO̒lԂꂽꍇɂ̓G[IłB

  c). ㏈

      Kvȏ ( TeXMain() ֐) I㏈֐Ăяo܂B

        void WINAPI TeXUninitialize(HTeX hTeX);

      IK̊֐ĂяoĉB
      TeXInitialize() ꍇɂ́Å֐̌Ăяo̗LAۂ
      ւ炸AKĂяoKv܂BĂяôYꂽꍇA
      ň̏ꍇA(vZX)fbhbNN܂BɁA
      TeX 𑖂点ĂXbhI悤ȂƂ͔悤
      S|ĂBATeX ̏𒆒fꍇɂ́A
      q́uC^vVv̍ڂQlɁATeX DLL ɒfp
      bZ[W𑗂悤ɂĂB

      sReLXg ( hTeX) LȂ̂́AOq
      TeXInitialize() ĂяoĂA TeXUninitialize() 
      Ăяo܂ł̊Ԃ݂̂łBsReLXgƂ֐
      ̊ԂɌĂяo悤ɂĂB܂AsReLXg
      Ƃ֐Ԃ|C^̊ԂLłBXKv
      Ȃꍇɂ́AlAvP[VŊmۂ̈
      Rs[Ďg悤ɂĂB

      :

         HTeX hTeX;

           TeXInitialize() ֐̕Ԓln܂B

      Ԓl:

        ȂB

  d). R[obN

      DLL  UI ̊Ԃ̏ɂ̓R[obNp܂B
      ֐̈ lpfCallback łB̊֐͈ȉ̌^܂B

      LONG WINAPI CallbackFunction(TeXDLLMessage msg,
         DWORD dwParam1, DWORD dwParam2, LPVOID lpCallbackData)

      ̃R[obN֐̖͑傫Ď 3 ނ܂B

        i).   ^[~i I/O
        ii).  GfB^̋N
        iii). METAFONT ̃ICfBXvC

      R[obN֐Ă΂ꂽÅ֐ōsȂׂ
       msg ܂Bǂ̂悤 msg ̒l邩 texdll.h 
      Bł͂̂Ȃ݂̂̂܂B

      ܂ÃR[obN̋̓IȎɂĂ͕t cuitex.c 
      B

      R[obN֐̃p[^Ƃă|C^n邱Ƃ܂B
      ̃|C^́AuR[obN֐ł̂ݗLvł邱Ƃɒ
      ĉBR[obNł̃|C^ۑĂ
      ł̃|C^𗘗pƂƂ́uł܂vB
      Kvȏꍇɂ̓f[^̃Rs[ƂĂƂőΏĉB

        i). ̏o

          msg  TeXDLL_CONSOLE_WRITE ̏ꍇɂ̓^[~iւ̕
         o͂Ȃ܂B^[~ĩtbVɂȂ
         B
         ̎A dwParam1 ɂ͕ւ̃|C^AdwParam2 ɂ͕
         n܂BdwParam1  LPCSTR ^ɃLXgėp܂B
         n镶̍Ōɂ C ̕ null t܂A
         dwParam2 œn镶̒ɂ null ̂Ԃ͊܂܂܂B
         xɓn镶̖̓}`oCg 1 oCgڂœr؂
         Ƃ͂܂ (K 2 oCgڂ܂ł܂Ƃ߂Ĉ
         TeXDLL_CONSOLE_WRITE bZ[WőM܂)B
         Ԓl͖܂B

         TeXDLL_STDOUT_WRITE ̏ꍇɂ͕Wo͂ւ̏o͂łB̈Ӗ
         TeXDLL_CONSOLE_WRITE ƓłBWo͂ƃR\[̈Ⴂ∵
          DLL 𗘗pAvP[VɈˑł傤ɋK
         Ă܂Bꂼ̃AvP[VɓKĂB

       ii). 1 擾

          msg  TeXDLL_CONSOLE_GETC ̏ꍇɂ̓R\[ 1 
         擾܂B擾̓R[obN֐̕ԒlƂĕԂĉB
         ʏ̓AvP[Vňs܂Ƃ߂ă[U͂󂯎肻
         obt@OĂāÂ̈ꕶɕԂ悤ɂ܂B
         s̉sԂKv܂Bs LF ꕶł (CR 
         tȂł)B͂Ȃꍇɂ -1 Ԃ܂B
         dwParam1  dwParam2 ̒l͈Ӗ܂B

     iii). GfB^̋N

          msg  TeXDLL_INVOKE_EDITOR ̏ꍇɂ́AR\[
         'e' ͂ăGfB^̋NvꂽƂ\܂B
         dwParam1 ɂ̓t@Cւ̃|C^AdwParam2 ɂ 1 n܂
         sԍn܂BdwParam1  LPCSTR ^ɃLXgėp܂B
         Ԓl͖܂B̃bZ[ẂA(ۂɊOGfB^N
         ̂ł͂Ȃ) GUI ŃG[sɃWv悤ȋ@\̂ɂ
         p邱Ƃo܂BAR[obN畜A܂
         TeX DLL ͏I܂̂ŁAʏ́ÃbZ[Wł̓t@C
         sԍۑ邾ɂƂǂ߁ADLL ł̏I_ (Main
         ֐I_) ̌փWv̂悢ł傤B

      iv). METAFONT ̃ICfBXvC

         ̎̃bZ[ẂAMFMain() / MFVaMain() ֐݂̂łB
         ICfBXvCT|[gȂAvP[Vł
         TeXDLL_MFDISPLAY_INITIALIZE ĒPɖĂB
         ICfBXvCp̃bZ[W͑S 6 ނ܂B

         ICfBXvĆAfoCXReLXgp
         `CĂ܂@ƁAׂăAvP[V
         ʓ|@Ƃ܂B

          TeXDLL_MFDISPLAY_INITIALIZE

            ʂ̏Ȃ܂Bp[^ dwParam1  dwParam2 
            Ӗ܂Bɐɂ 1Asɂ
            0 R[obN֐̒lƂĂꂼԂĂB

            ICfBXvCT|[gȂꍇɂ͂̃bZ[W
            ɑ΂Ēl 0 (s) ԂĂBȌATeXDLL_MFDISPLAY_*
            ƂbZ[W͑ĂȂȂ܂B

          TeXDLL_MFDISPLAY_BEGINCHAR

            ꕶ̕`悪n܂钼OɌĂяo܂B
            foCXReLXgpĕ`ꍇɂ͕ԒlƂ
            foCXReLXg (HDC) ԂĂBfoCXReLXg
            pȂꍇɂ 0 Ԃ܂B
            œnfoCXReLXg͕̕`悪I܂
            (TeXDLL_MFDISPLAY_ENDCHAR bZ[W񑗐M܂)
            LȂ̂łȂ΂Ȃ܂B
            p[^ dwParam1  dwParam2 ͈Ӗ܂B

          TeXDLL_MFDISPLAY_ENDCHAR

            ꕶ`悪I閈ɌĂяo܂Bp[^ dwParam1 
            dwParam2 ͈Ӗ܂BԒl͖܂B
            ꕶ`I閈Ƀ|[Y悤ȏꍇɂ͂
            ̏s܂B

          TeXDLL_MFDISPLAY_CLEAR

            TeXDLL_MFDISPLAY_BEGINCHAR ɑ΂āAfoCXReLXg
            ԂȂꍇɂ݂̂̃bZ[WM܂B

            `̈鎞ɌĂяo܂B̈\W dwParam1 
            RECT \̂ւ̃|C^Ƃēn܂BdwParam2 ͈Ӗ
            ܂B
            
            Ԓl͖܂B

          TeXDLL_MFDISPLAY_PAINT

            TeXDLL_MFDISPLAY_BEGINCHAR ɑ΂āAfoCXReLXg
            ԂȂꍇɂ݂̂̃bZ[WM܂B

            1 X^C`悵܂Bf[^ MFDisplayRaster \̂
            ė^AdwParam1 ɂ̃|C^n܂B
            dwParam2 ͈Ӗ܂B

            MFDisplayRaster  texdll.h Œ`ĂAetB[h
            ȉ̂悤ȈӖ܂B

              BOOL  bBlack  n܂鎞 TRUEA̎ FALSE
              DWORD dwRow   X^ԍBŏ̃X^C 0B
              DWORD dwVectorSize
                            f[^z̗vf
              LPDWORD lpdwVector
                            f[^zւ̃|C^B
                            A鍕܂͔̓_̍ō_̍W̔zB
                            X^C̍[̍W 0B
                            Ɣ݂ɕԁB
                            Ō̗vfɂ́AX^̍ŉE_̍W + 1 
                            B

            Ԓl͖܂B

            Ⴆ΁A 50 ŝ悤ȃX^C̏ꍇ...

             (0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 )
              

            ̏ꍇA̓_n܂̂ bBlack  TRUEB
            dwRow ̓X^ԍ 50B
            dwVectorSize ́AƔ̌ł܂肪 6 ̂ 7B
            lpdwVector ̔źA܂͔̌ł܂肪A

              0, 4, 6, 7, 15, 22

            n܂Ă̂ŁA

              0, 4, 6, 7, 15, 22, 24

            Ƃ 7 ̔z (7 Ԗڂ̗vf́AŉE_̍W + 1)B

          TeXDLL_MFDISPLAY_UNINITIALIZE

            SĂ̕\I鎞ɌĂяo܂Bʂ̌n͂
            s܂BdwParam1 dwParam2 ͈Ӗ܂BԒl͖܂B

  e). C^vV

      C^vV Windows bZ[WɂĎĂ܂B

        ̋@\ TeX/pTeX/METAFONT/MetaPost/MFtoPK ݂̂łB

       TeX DLL ́AsɃXbhVKɐÃXbhɑ
       s window 쐬܂B window  SendMessage 
       PostMessage ȂǂpăC^vVӖ郁bZ[W
       邱Ƃɂ TeX  METAFONT ̃C^vV@\
       ł܂ (P Xbh + PostThreadMessage ɂȂŔA
       XbhԓȒP SendMessage ֐̎gpŎ
       ߂ł)B

       bZ[W̑ƂȂ window ́ATeXGetWindow() ֐̕ԒlƂ
       邱Ƃł܂BTeXGetWindow() ̕Ԓl TeXInitialize() ďo
       ŗLłB

       ̂ƂAbZ[WƂĂ̓C^vVƒfpӂ
       ܂񂪁AIɃbZ[W̎ނ邱Ƃ܂B

       C^vṼbZ[ẂAtexdll.h ̒ł̖O`
       ܂BۂɃbZ[Wgpɂ͂炩 Win32 API ֐
       RegisterWindowMessage() pāAOɑΉ郁bZ[W ID 
       擾ĂB

          bZ[W    TeXDLL_WM_TEXDLL

       TeX DLL ւ̗v̓e SendMessage / PostMessage  wParam ̒l
       w肵܂BwParam ̒l͈ȉ̂ƂłB

          C^vV   TeXDLL_MESSAGE_INTERRUPT
          f               TeXDLL_MESSAGE_KILL

       C^vVƒfƂ̈Ⴂ́Af̏ꍇɂ̓[U̓͑҂
       ȂƂ_łB

       lParam ͍̂ƂgpĂ܂񂪁ALbZ[WɊւĂ
       0 n悤ɂĂB
       
       ႦΎ̂悤ɗp܂B

       DWORD wm_texdll;
       
       void CallTeX(void)
       {
         HTeX hTeX = TeXInitialize(callback, callback_data, NULL);
         HWND hWnd = TeXGetWindow(hTeX);
         wm_texdll = RegisterWindowMessage(TeXDLL_WM_TEXDLL);
            :
         VaTeXMain(hTeX, "latex", "sample.tex", NULL);
            :
       }

       void InterruptTeX(HWND hWnd)
       {
         PostMessage(hWnd, wm_texdll, TeXDLL_MESSAGE_INTERRUPT, 0);
       }

  f). Wu

         ̋@\ TeX/pTeX/METAFONT/MetaPost/MFtoGF ݂̂łB

      WúAC֐I TeXGetJobName() ֐p
      擾ł܂BTeXGetJobName() ̈ɂ TeXInitialize() ֐
      Ԓlw肵܂B

        LPCSTR lpcszJobName = TeXGetJobName(hTeX);

      WuȂɃC֐Iꍇɂ NULL 
      Ԃ܂B

      ̊֐́A㏈֐ (TeXUninitialize() ֐) ĂяoO
      pĉB

  g). o̓t@C

         ̋@\ TeX/pTeX/METAFONT/MetaPost/MFtoGF ݂̂łB

       WuƓlɎ擾ł܂BTeXGetJobName ̑
       TeXGetOutputFileName() pĉB

  h). o[W

      DLL ̃o[WADLL ƃAvP[VԂ API ̃o[WA
      y TeX ̃o[ẂADLL ̃o[W\[XQƂ
      Ƃœ邱Ƃo܂B

      o[W\[X𓾂ɂ́ADLL ̃t@CKvłA
      ͈ȉ̊֐gĒm邱Ƃo܂B

        LPCSTR TeXGetLibraryFileName(void);

      o[ẂAVerQueryValue() API ֐ɂē
      Œo[W (VS_FIXEDFILEINFO \) ̃oɈȉ̌`
      i[܂B

        dwFileVersionMS
          ʃ[h: DLL W[o[W
          ʃ[h: DLL }Ci[o[W
        dwFileVersionLS
          ʃ[h: DLL pb`x
          ʃ[h: API o[W
        dwProductVersionMS
          ʃ[h: vOW[o[W
          ʃ[h: vO}Ci[o[W
        dwProductVersionLS
          ʃ[h: vOpb`x
          ʃ[h: \

     TeX DLL ƃAvP[V̊Ԃ API ͗\ȂύX邱Ƃ
     ܂B̕ύXoɂ́Ão[W
     API o[W𒲂ׂ܂B

     wb_t@C texdll.h  TeXDLL_API_VERSION }N`
     ܂̂ŁA o[W񒆂 API o[WƔr邱Ƃ
     āAAPI ̐ł܂B

        TeXGetLibraryFileName() ֐ API ͏IɕύXȂ
          Ƃۏ؂Ă܂B

  i). tH[}bgt@CEx[Xt@C̃`FbNT̎擾

        ̋@\ TeX/pTeX/METAFONT/MetaPost/MFtoPK ݂̂łB

    tH[}bgt@CEx[Xt@C̃`FbNT
    (*.fmt/*.base/*.mem ̐擪 4 oCg) ͎gp TeX {̂ɌŗL̂
    ł (ASCII pTeX  IWi TeX ƂłقȂ܂)B
    gp DLL ŗL̃`FbNT͈ȉ̊֐Ŏ擾ł܂B

      DWORD WINAPI TeXGetChecksum(VOID);

  j). ֐|C^e[u̎擾

    ܂Ő DLL ̊֐̃AhX DLL ̓I[h̍ۂ
    擾͖̂ʓ|ȍƂłBŁATeX DLL ł
    ֐̃|C^CɎ擾邱Ƃł悤ɁA
    ֐|C^߂\̂擾邽߂̊֐pӂĂ܂B

      LPCTeXProcedures TeXGetProcedures(VOID);

    ̊֐p΁AႦΎ̂悤 GetProcAddress Ăяo͈
    ς݂܂B

      LPFTeXGetProceduresProc lpfGetProcs =
        (LPFTeXGetProceduresProc)GetProcAddress(hDLL, "TeXGetProcedures");
      LPCTeXProcedures lpProcs = (*lpfGetProcs)();
      HTeX hTeX = (*lpProcs->Initialize)();
      if (hTeX) {
        LONG lResult = (*lpProcs->Main)(hTeX, ...);
        (*lpProcs->Uninitialize)(hTeX);
      }

    ֐e[u̍\̂̃oɂĂ texdll.h  TeXProcedures 
    `B

    TeXGetProcedures() ֐̕Ԓl TeXProcedures \̂́A
    ĂȂ֐̃|C^ɂĂ NULL Zbg܂B
    TeXProcedures \̂̕\֐ĂяoOɁAK֐ւ̃|C^
    Lǂ`FbNĂBAŒAȉ̊֐ɂĂ
    Ă邱Ƃۏ؂܂̂ŁÃoɂĂ̓`FbN
    Kv͂܂B

      GetLibraryFileName, Main, Initialize, Uninitialize

    ܂ATeXProcedures \̂̒ GetLibraryFileName ̈ʒu API 
    ύXꂽƂĂKŒʒu (擪) ɂ邱Ƃۏ؂܂̂ŁA
    API ̃o[W`FbNɂĂ TeXGetProcedures() ֐̕Ԓlp
    GetLibraryFileName() ĂяoĂ܂܂B
      

3). TeX DLL ̎gp̗

  ȒP̂߂ɃG[͏ȂĂ܂Bł͓I DLL ̃[h
ȂĂ܂AÓIȃ[hȂꍇł(Gg
|Cg̉) 菇͓łB

  ܂ATeX DLL p̌^萔p܂̂ŁA炪`Ăwb
_t@C texdll.h CN[hĉB

       a). DLL  Load
       b
       b  HINSTANCE hDLL = LoadLibrary("tex");
       
       b). ֐e[u̎擾
       b
       b  LPFTeXGetProceduresProc lpfGetProcs =
       b    (LPFTeXGetProceduresProc)GetProcAddress(hDLL, "TeXGetProcedures");
       b  LPCTeXProcedures lpProcs = (*lpfGetProcs)();
       
       c). API ̃o[W`FbN
       b
       b  LPCSTR lpszDllFileName = (*lpProcs->GetLibraryFileName)();
       b  DWORD dwReserved;
       b  DWORD dwVerInfoSize = GetFileVersionInfoSize(lpszDllFileName, &dwReserved);
       b  LPVOID verInfo = HeapAlloc(GetProcessHeap(), 0, dwVerInfoSize);
       b  VS_FIXEDFILEINFO *fileInfo;
       b  UINT uFileInfoSize;
       b  GetFileVersionInfo(lpszDllFileName, 0, dwVerInfoSize, verInfo);
       b  VerQueryValue(verInfo, "\\", &fileInfo, &uFileInfoSize);
       b  if (fileInfo->dwFileVersionLS & 0xffff != TeXDLL_API_VERSION) {
       b    /* API version mismatch */
       b  }
       
  | d). 
 b    b
 b    b  HTeX hTeX;
 b    b  hTeX = (*lpProcs->Initialize)(lpfCallbackFunc, lpCallbackData, NULL);
 b    
Loop   e). C֐
 b    b
 b    b  LONG lExitCode;
 b    b  lExitCode = (*lpProcs->VaMain)(hTeX, "latex", "\\input testpage", NULL);
 b    
  || f). ㏈
       b 
       b  (*lpProcs->Uninitialize)(hTeX);
       
       g). DLL ̉
 
           FreeLibrary(hDLL);

4). WXg̐ݒ

  ȉ̋Lqɂċ̓IȃC[W킩Ȃꍇɂ́AWXgGfB
^pāAۂ̗lqmFȂǂłB

  a). TeX DLL ̃pX

     TeX DLL ̃ZbgAbvvO̓CXg[ɁAWXg
     L[ uHKEY_LOCAL_MACHINE\Software\Kazunori Asayama\TeX DLLv 
     l uPathv ݒ肵܂B́ATeX DLL CXg[ꂽ
     fBNgłB

     TeX DLL 𗘗pvÓAȉ̂ꂩ̕@ŁADLL 
     ǂݍ߂悤ɂĂB

     i). I (LoadLibrary() API p) TeX DLL [hꍇ

       Oq̒l܂ׂāADLL ̖O ("ptex.dll" Ȃ) ̑Oɂ
       lt邱ƂɂāAtpX DLL w肷B

     ii). Cӂ̏ꍇ

       CXg[sƂɁAWXg̃L[
      uHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\
                                    CurrentVersion\App Paths\<<AppName>>v
       ɁuPathvƂl̃GgA̒lɁAOq DLL 
       CXg[ꂽfBNgǉB
         c.f.) uWindows [UC^[tF[XfUCKChv(MS-Press)
                                 ---- uAvP[VpX̏̓o^v

5). MakeTeX

TeX {̂̂ق MakeTeXPKAMakeTeXTFM y MakeTeXls-R DLL Ƃ
Ă܂BDLL ̖O MakeTeX.dll ŁA DLL ͓ mf.dll
y mftopk.dll 𗘗p܂B

TeX DLL ɗp\ɂȂĂ΁AMakeTeX.dll ̎gp͊ȒPłB
̂悤Ɉw肵āAGg|Cg MakeTeXPKMain() Ȃǂ
ĂяołB

  BOOL WINAPI MakeTeXPKMain(LPSTR lpszFileName,
                            DWORD dwFileNameLen,
                            LPFTeXCallbackProc lpfCallback,
                            LPVOID lpCallbackData,
                            LPCSTR lpszFontName,
                            LPCSTR lpszMag,
                            DWORD dwModeDpi,
                            LPCSTR lpszMode);

    w肳ꂽÕtHgw肳ꂽg嗦Ŏw肳ꂽ[h
    gĐ܂B

    :

       LPSTR lpszFileName

         ꂽ PK tHg̃t@C (tpX) Ԃ߂̗̈łB
         ̊֐ĂяoOɂ炩ߊmۂĂÃTCY
         dwFileNameLen Ŏw肵܂B

       DWORD dwFileNameLen

         obt@ lpszFileName ̑傫 (oCg) łB

       LPFTeXCallbackProc lpfCallback
       LPVOID lpfCallbackData

         R[obN֐т̈łBprю@ TeX DLL 
         łB

       LPCSTR lpszFontName

         tHg̖O (cmr10 Ȃ) łB

       LPCSTR lpszMag

         g嗦\łBMETAFONT ɗ^̂Ɠ\g܂B
         Ƃ magstep 1 (1.2 {) ł lpszMag = "magstep(1)" ̂悤
         w肵܂B̈ NULL ł 1 {Ɖ߂܂B

       DWORD dwModeDpi

         o̓foCXA܂ METAFONT  mode ƂĎw肷郂[h
         𑜓xłBlpszMode Ƃ NULL ^ꂽꍇɌA
         ̒lɃ[h܂BlpszMode w肵Ăꍇɂ
         0 w肵Ă܂܂Bw肳ꂽꍇɂ lpszMode 
         D悳܂B

       LPCSTR lpszMode

         PK tHg̐ɗp METAFONT ̃[h̖OłB
         𑜓x (dwModeDpi) Ƀ[h𐄑ꍇɂ͂̈
         NULL Ɏw肵ĂBAdwModeDpi  lpszMode ̑o
         w (ꂼA0, NULL) ɂ邱Ƃ͂ł܂B

    Ԓl:

        tHg̐ɐꍇɂ 0 ȊO̒lԂ܂B
        sꍇɂ 0 Ԃ܂B

  BOOL WINAPI MakeTeXTFMMain(LPSTR lpszFileName,
                             DWORD dwFileNameLen,
                             LPFTeXCallbackProc lpfCallback,
                             LPVOID lpCallbackData,
                             LPCSTR lpszFontName);

    w肳ꂽO TFM 𐶐܂B

    yѕԒl:

      S MakeTeXPKMain ƓӖłB

  BOOL WINAPI MakeTeXlsRMain(LPCSTR lpszTopDir, LPCSTR lpszLSR);

    :

       LPCSTR lpszTopDir

         ls-R f[^x[X̓ẽgbvfBNgB쐬 ls-R f[^
         x[X̓ftHgł (lpszLSR  NULL ̏ꍇɂ) ̃fBNg
         ܂BlpszTopDir  NULL ̂Ƃɂ kpathsea ϐ 
         (KpseCnfEdit.exe ŉ{EҏW)  TEXMFLS_RATEXMFMAIN ɒׂA
         Ɍ̂p܂B

       LPCSTR lpszLSR

         ls-R f[^x[X̃t@CB̒l NULL ̏ꍇɂ́A
         gbvfBNg "ls-R" Ƃt@CɂȂ܂B

    Ԓl:

        ls-R f[^x[X̐ɐꍇɂ 0 ȊO̒lԂ܂B
        sꍇɂ 0 Ԃ܂B


6). 

  DLL ̓}`Xbhɂ͑ΉĂ܂ (web2c fR[h͑ʂ
O[oϐ𐶐̂ő啝ȕύXKvȂ)B 1 vZX
ł͓ 1  TeX (*TeXMain ֐݂̂ł͂ȂDLL ׂ̂Ă̊֐
) gȂƂӖłBɁA(TLS pȂǂ) }
`XbhΉȂƂôłAsx傫]
Ȃ邽ߑΉ͌킹Ă܂ (ɁATeX }`Xbhœ
Ƃv͂Ȃł傤...)B

  ̂߂̔r DLL łȂĂ܂̂ŁA DLL 𗘗p
ă}`XbhAvP[V (Ƃ MDI  TeX GfB^Ȃ) 
JvO}́A̐vO~O̍ۂɈӎKv͂
܂BAr TeXInitialize ֐TeXUninitialize ֐
ŃNeBJZNVpčsĂ܂̂ňȉ̗̂悤 
TeXInitialize ... TeXUninitialize ̃ubN̃Xbhœq
悤ȃR[fBO͍sȂ悤ɂĂ (قȂXb
hԂTeXInitialize  TeXUninitialize 邱Ƃɂ͖͂Ȃ)B

  /* q */
  hTeXA = TeXInitialize(...);
    hTeXB = TeXInitialize(...); /* ŃfbhbN */
    TeXUninitialize(hTeXB);
  TeXUninitialize(hTeXA);

  /*  */
  hTeXA = TeXInitialize(...);
  hTeXB = TeXInitialize(...); /* ŃfbhbN */
  TeXUninitialize(hTeXA);
  TeXUninitialize(hTeXB);

v́AXbh TeXInitialize ĂяoƂɂ͂̑OɁAX
bhł̑OTeXInitialize ̌ĂяoɑΉ TeXUninitialize 
KĂяoĂƂƂłB

  t@Cɋ󔒂 2 oCg܂܂邱Ƃɂ͑̐
BT[`[`oRœnt@CɊւĂ͑vłAR}
hC TeX / METAFONT ̃}NE\[Xł͌ƂĎgȂ
̂ƍlĉB

  ܂AR}hCnt@Cł͂Ɋ܂܂fBNg
̋؂蕶 '\'  '/' ɕύXĉB듮̌ɂȂ܂B

   DLL  API ́A\ȂύX邱Ƃ܂B

---
ǎR aT (ASAYAMA Kazunori)
asayama@vsp.cpg.sony.co.jp
GHF01532@niftyserve.or.jp
TPM03937@pcvan.or.jp
********************************** EOF *********************************
