summaryrefslogtreecommitdiff
path: root/support/konwerter/operacje_na_tex.cc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/konwerter/operacje_na_tex.cc
Initial commit
Diffstat (limited to 'support/konwerter/operacje_na_tex.cc')
-rw-r--r--support/konwerter/operacje_na_tex.cc151
1 files changed, 151 insertions, 0 deletions
diff --git a/support/konwerter/operacje_na_tex.cc b/support/konwerter/operacje_na_tex.cc
new file mode 100644
index 0000000000..a47a179330
--- /dev/null
+++ b/support/konwerter/operacje_na_tex.cc
@@ -0,0 +1,151 @@
+
+ /***************************************************************************
+ * *
+ * Copyright (C) 2005 Piotr Wawrzyniak (piti@piti.vsv.pl *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#include"operacje_na_tex.h"
+#include"czyt_zapis.h"
+#include"prz_string.h"
+
+int przeszukaj_linie_tex(char*);
+int przed_etykieta_po(char,char*,char*,char*,char);
+int podaj_etykiete_liczbe(char *, char *, int *);//linia etykieta kolejnosc
+int zwroc_numer_etykiety(kol_etykiet*,char*,kol_etykiet**);
+extern int language;
+extern char polecenie[DL_WIERSZA];
+extern int test;
+
+int operacje_na_tex(char *nazwa_pliku, kol_etykiet*wierzcholek)
+{
+ char drugi_plik_tex[DL_WIERSZA];
+ drugi_plik_tex[DL_WIERSZA-1]=drugi_plik_tex[0]=drugi_plik_tex[1]='\0';
+
+ strcat(drugi_plik_tex,nazwa_pliku);
+ strcat(drugi_plik_tex,".auto.tex");
+
+
+ ofstream plik_tex_wy(drugi_plik_tex);
+ if(!plik_tex_wy)
+ {
+ if(language==0)
+ {
+ cout<<"Nie mogłem otworzyć pliku wyjściowego"<<endl;
+ }
+ else
+ {
+ cout<<"I couldn't open "<<drugi_plik_tex<<"file."<<endl;
+ }
+ return 1;
+ }
+
+ ifstream plik_tex_we(nazwa_pliku);
+ if(!plik_tex_we)
+ {
+ if(language==0)
+ {
+ cout<<"Nie mogłem otworzyć pliku wejściowego"<<endl;
+ }
+ else
+ {
+ cout<<"I couldn't open "<<nazwa_pliku<<" file."<<endl;
+ }
+ return 1;
+ }
+
+ char c[DL_WIERSZA];
+ c[DL_WIERSZA-1]='\0';
+ int dl_lini;
+
+ while(!wczytaj_linie_tex(c,&dl_lini,DL_WIERSZA,plik_tex_we))
+ {
+ switch(przeszukaj_linie_tex(c))
+ {
+ case 0:{plik_tex_wy<<c;break;}
+ case 1://znalazł etykietę
+ {
+ char przed[DL_WIERSZA];
+ char po[DL_WIERSZA];
+ char etykieta[DL_WIERSZA];
+ przed[DL_WIERSZA-1]=po[DL_WIERSZA-1]=etykieta[DL_WIERSZA-1]='\0';
+ int kolejnosc;
+ podaj_etykiete_liczbe(c,etykieta,&kolejnosc);//zwraca etykietę
+ kol_etykiet *zmienna_tymczasowa1;
+ kol_etykiet**zmienna_tymczasowa=&zmienna_tymczasowa1;
+ kolejnosc=zwroc_numer_etykiety(wierzcholek,etykieta,zmienna_tymczasowa);//zwraca numer etykiety
+ if(kolejnosc==0)
+ {
+ if(language==0)
+ {
+ cout<<endl<<"Nieznana etykieta: "<<etykieta<<endl;
+ cout<<"Pozostawiam niezmienione."<<endl;
+ }
+ else
+ {
+ cout<<"Unknown label in tex file: "<<etykieta<<endl
+ <<"Leaving unchanged."<<endl;
+ }
+ plik_tex_wy<<c;
+ }
+ else
+ {
+ przed_etykieta_po('{',c,przed,po,'}');//zwraca co jest przed a co po etykiecie
+
+ //to późnej będzie można usunąć
+ //cout<<przed<<kolejnosc<<po<<endl;
+
+ //plik_tex_wy<<'\\'<<przed<<kolejnosc<<po;
+ plik_tex_wy<<'\\'<<przed<<(*zmienna_tymczasowa)->kolejny_numer_string<<po;
+ }
+ break;
+ }
+ case 2://znalazł nazwę pliku
+ {
+ char nazwa_pliku[DL_WIERSZA];
+ int kolejnosc;
+ char przed[DL_WIERSZA];
+ char po[DL_WIERSZA];
+ nazwa_pliku[DL_WIERSZA-1]=przed[DL_WIERSZA-1]=po[DL_WIERSZA-1]='\0';
+ podaj_etykiete_liczbe(c,nazwa_pliku,&kolejnosc);
+ przed_etykieta_po('{',c,przed,po,'}');
+ operacje_na_tex(nazwa_pliku,wierzcholek);
+ plik_tex_wy<<'\\'<<przed<<nazwa_pliku<<".auto.tex"<<po;
+ break;
+ }
+ }
+
+ }
+
+
+
+
+
+ plik_tex_we.close();
+ plik_tex_wy.close();
+
+ if(test)
+ unlink(drugi_plik_tex);
+
+ return 0;
+}
+
+int przeszukaj_linie_tex(char *linia)
+{
+
+ if(bm(polecenie,linia)==0)
+ {
+ return 1;
+ }
+
+ else
+ if(bm("\\input{",linia)==0)return 2;
+
+return 0;
+
+}