diff --git a/.store/part1.py b/.store/part1.py
new file mode 100644
index 0000000..6e9ca0a
--- /dev/null
+++ b/.store/part1.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# -*- encoding:UTF-8 -*-
+# coding=utf-8
+# coding:utf-8
+
+import codecs
+from PyQt6.QtWidgets import (QWidget, QPushButton, QApplication,
+                             QLabel, QHBoxLayout, QVBoxLayout, QLineEdit,
+                             QSystemTrayIcon, QMenu, QComboBox, QDialog,
+                             QDialogButtonBox, QMenuBar, QFrame, QFileDialog,
+                             QPlainTextEdit, QTabWidget, QTextEdit, QScrollBar, QGraphicsOpacityEffect)
+from PyQt6.QtCore import Qt, QRect, QPoint, QPropertyAnimation, QObjectCleanupHandler
+from PyQt6.QtGui import QAction, QIcon, QPixmap, QTextCursor, QColor, QPalette, QPainter
+import PyQt6.QtGui
+import sys
+import webbrowser
+import os
+from pathlib import Path
+import re
+import jieba
+from pypinyin import lazy_pinyin
+import markdown2
+import plistlib
+import fire
+import datetime
+
+app = QApplication(sys.argv)
+app.setQuitOnLastWindowClosed(False)
+
+# Create the icon
+icon = QIcon("strmenu.icns")
+
+# Create the tray
+tray = QSystemTrayIcon()
+tray.setIcon(icon)
+tray.setVisible(True)
+
+# Create the menu
+menu = QMenu()
+
+action3 = QAction("📔 Let's collect!")
+menu.addAction(action3)
+
+action4 = QAction("⚙️ Settings")
+menu.addAction(action4)
+
+menu.addSeparator()
+
+action5 = QAction("🔕 Focus mode!")
+menu.addAction(action5)
+action5.setCheckable(True)
+
+action6 = QAction("🔏 Editor mode!")
+menu.addAction(action6)
+action6.setCheckable(True)
+
+action7 = QAction("📺 RealTime mode!")
+menu.addAction(action7)
+action7.setCheckable(True)
+
+action10 = QAction("📚 Compact mode!")
+menu.addAction(action10)
+action10.setCheckable(True)
+
+action8 = QAction("📐 Restore size!")
+menu.addAction(action8)
+
+action9 = QAction("☁️ Hide dock!(reboot)")
+menu.addAction(action9)
+action9.setCheckable(True)
+dock_st = codecs.open('dock_state.txt', 'r', encoding='utf-8').read()
+if dock_st == '1':
+    action9.setChecked(True)
+if dock_st == '0':
+    action9.setChecked(False)
+
+menu.addSeparator()
+
+action2 = QAction("🆕 Check for Updates")
+menu.addAction(action2)
+
+action1 = QAction("ℹ️ About")
+menu.addAction(action1)
+
+menu.addSeparator()
+
+# Add a Quit option to the menu.
+quit = QAction("Quit")
+quit.triggered.connect(app.quit)
+menu.addAction(quit)
+
+# Add the menu to the tray
+tray.setContextMenu(menu)
+
+# create a system menu
+button_action = QAction("&Let's collect!")
+btna2 = QAction("&Focus mode!")
+btna2.setCheckable(True)
+btna3 = QAction("&Editor mode!")
+btna3.setCheckable(True)
+btna4 = QAction("&Pin!")
+btna4.setCheckable(True)
+btna5 = QAction("&RealTime mode!")
+btna5.setCheckable(True)
+sysmenu = QMenuBar()
+file_menu = sysmenu.addMenu("&Actions")
+file_menu.addAction(button_action)
+file_menu.addAction(btna2)
+file_menu.addAction(btna3)
+file_menu.addAction(btna5)
+file_menu.addAction(btna4)
\ No newline at end of file
diff --git a/.store/part10.py b/.store/part10.py
new file mode 100644
index 0000000..24a63c1
--- /dev/null
+++ b/.store/part10.py
@@ -0,0 +1,20 @@
+% cmd for this doc
+\\usepackage{array}
+\\newcommand{\\ccr}[1]{\\makecell{{\\color{#1}\\rule{1cm}{1cm}}}}
+
+\\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\maketitle
+
+\\begin{abstract}
+Words.
+\\keywords{Keywords}
+\\end{abstract}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 2:
+                    part_c = '\n' + '''\\author{人名}
+\\institute{单位}
+\\date{\\zhtoday}
\ No newline at end of file
diff --git a/.store/part11.py b/.store/part11.py
new file mode 100644
index 0000000..1623fb2
--- /dev/null
+++ b/.store/part11.py
@@ -0,0 +1,96 @@
+\\usepackage{array}
+
+\\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\maketitle
+\\newpage
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 3:
+                    part_c = '\n' + '''\\author{Name}
+\\institute{Institute}
+\\date{\\today}
+
+\\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\maketitle
+\\newpage
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 4:
+                    part_c = '\n' + '''\\author{\\IEEEauthorblockN{1\\textsuperscript{st} Given Name Surname}
+\\IEEEauthorblockA{\\textit{dept. name of organization (of Aff.)} \\\\
+\\textit{name of organization (of Aff.)}\\\\
+City, Country \\\\
+email address or ORCID}
+\\and
+\\IEEEauthorblockN{2\\textsuperscript{nd} Given Name Surname}
+\\IEEEauthorblockA{\\textit{dept. name of organization (of Aff.)} \\\\
+\\textit{name of organization (of Aff.)}\\\\
+City, Country \\\\
+email address or ORCID}
+\\and
+\\IEEEauthorblockN{3\\textsuperscript{rd} Given Name Surname}
+\\IEEEauthorblockA{\\textit{dept. name of organization (of Aff.)} \\\\
+\\textit{name of organization (of Aff.)}\\\\
+City, Country \\\\
+email address or ORCID}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\maketitle
+
+\\begin{abstract}
+Words.
+\\end{abstract}
+
+\\begin{IEEEkeywords}
+Keywords.
+\\end{IEEEkeywords}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 5:
+                    part_c = '\n' + '''{\\songti 作者} 
+{(~机构~)}
+
+\\begin{minipage}[b]{0.9\\linewidth}
+\\narrower\\zihao{5}\\noindent {\\songti \\textbf{摘}\\quad\\textbf{要}}\\ \\ 
+文字
+\\end{minipage}
+
+\\normalsize \\normalsize \\abovedisplayskip=2.0pt plus 2.0pt minus
+2.0pt \\belowdisplayskip=2.0pt plus 2.0pt minus 2.0pt \\baselineskip
+16pt
+
+\\begin{multicols}{2}\\songti \\zihao{5}%宋体字
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 6:
+                    part_c = '\n' + '''\\subtitle{副标题}
+\\author{人名}
+\\institute{学校机构}
+\\date{\\zhtoday}
+\\usepackage{BeamerCN}
+
+% defs
+\\def\\cmd#1{\\texttt{\\color{red}\\footnotesize $\\backslash$#1}}
+\\def\\env#1{\\texttt{\\color{blue}\\footnotesize #1}}
+\\definecolor{deepblue}{rgb}{0,0,0.5}
+\\definecolor{deepred}{rgb}{0.5,0,0}
+\\definecolor{deepgreen}{rgb}{0,0.5,0}
+\\definecolor{halfgray}{gray}{0.45}
+
+\\lstset{
+    basicstyle=\\ttfamily\\small,
+    keywordstyle=\\bfseries\\color{deepblue},
+    emphstyle=\\ttfamily\\color{deepred},    % Custom highlighting style
+    stringstyle=\\color{deepgreen},
+    numbers=left,
+    numberstyle=\\small\\color{halfgray},
+    rulesepcolor=\\color{red!20!green!20!blue!20},
+    frame=shadowbox,
+}
\ No newline at end of file
diff --git a/.store/part12.py b/.store/part12.py
new file mode 100644
index 0000000..fcb812d
--- /dev/null
+++ b/.store/part12.py
@@ -0,0 +1,2846 @@
+\\begin{document}
+
+\\kaishu
+\\begin{frame}
+    \\titlepage
+    %\\begin{figure}[htpb]
+        %\\begin{center}
+            %\\includegraphics[width=0.1\\linewidth]{School.png}
+        %\\end{center}
+    %\\end{figure}
+\\end{frame}
+
+\\begin{frame}
+    \\tableofcontents[sectionstyle=show,subsectionstyle=show/shaded/hide,subsubsectionstyle=show/shaded/hide]
+\\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 7:
+                    part_c = '\n' + '''\\author{人名}
+\\date{}
+
+\\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\maketitle
+%\\tableofcontents
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\renewcommand{\\abstractname}{摘\\ \\ \\ 要}
+\\begin{abstract}
+摘要。
+\\paragraph{}
+\\textbf{关键词:}关键词1、关键词2
+\\end{abstract}
+
+\\paragraph{\\ \\ \\ \\ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+
+                savelatex = re.sub(r"<document-start>", '', oldtext)
+                savelatex = re.sub(r"\n<document-end>", '', savelatex)
+                savelatex = re.sub(r"<!--Title: .*-->\n\n", '', savelatex)
+                savelatex = re.sub(r"# " + prettle + '\n\n', '', savelatex)
+                savelatex = re.sub(r"\[.*<e>\n", '', savelatex)
+                savelatex = re.sub(r"\n\n\n\n", '', savelatex)
+                savelatex = re.sub(r"## References \n\n", '', savelatex)
+                pattern2 = re.compile(r'\[.[0-9]+]')
+                result = pattern2.findall(savelatex)
+                result.sort()
+                cajref = codecs.open('path_ref.txt', 'r', encoding='utf-8').read()
+                cajref = cajref.replace('[[', '')
+                cajref = cajref.replace(']]', '')
+                cajref = cajref.split('\n')
+                i = 0
+                n = 0
+                while i >= 0 and i <= len(result) - 1 and n >= 0 and n <= len(cajref) - 1:
+                    #while n >= 0 and n <= len(cajref) - 1:
+                    if result[i] in cajref[n]:
+                        stripednum = result[i].replace('[^', '')
+                        stripednum = stripednum.replace(']', '')
+                        stripedref = re.sub(r"\[.*]: ", '', cajref[n])
+                        stripedref = re.sub(r"<e>", '', stripedref)
+                        savelatex = re.sub(r"\[." + stripednum + "]", "\\footnote{" + stripedref + '}', savelatex)
+                        i = i + 1
+                        n = 0
+                        continue
+                    if result[i] not in cajref[n]:
+                        n = n + 1
+                        continue
+                savelatex = re.sub("(####.*)", r'\1}', savelatex)
+                savelatex = savelatex.replace('#### ', '\\subsubsection{')
+                savelatex = re.sub("(###.*)", r'\1}', savelatex)
+                savelatex = savelatex.replace('### ', '\\subsection{')
+                savelatex = re.sub("(##.*)", r'\1}', savelatex)
+                savelatex = savelatex.replace('## ', '\\section{')
+                savelatex = savelatex.replace('# ', '')
+                savelatex = savelatex.replace('ootnote', '\\footnote')
+                savelatex = savelatex.replace('', '')
+
+                pattern_cha = re.compile(r'\n\n\|[\s\S]*?\|\n\n')
+                result_cha = pattern_cha.findall(savelatex)
+                if result_cha != []:
+                    new_cha = []
+                    for i in range(len(result_cha)):
+                        hang = result_cha[i].split('\n')
+                        while '' in hang:
+                            hang.remove('')
+                        n = 0
+                        shu = 3
+                        while n >= 0 and n <= len(hang) - 1:
+                            if '-' in hang[n]:
+                                hang.remove(hang[n])
+                            else:
+                                shu = int(hang[n].count('|')) - 1
+                                hang[n] = hang[n].lstrip('|')
+                                hang[n] = hang[n].rstrip('|')
+                                hang[n] = hang[n] + '\\\\ \\midrule'
+                                hang[n] = hang[n].replace('|', '&')
+                                n += 1
+                            continue
+                        hang[0] = hang[0].replace('\\\\ \\midrule', '\\\\ \\toprule')
+                        hang[-1] = hang[-1].replace('\\\\ \\midrule', '\\\\ \\bottomrule')
+                        hang[0] = '\n\n\\begin{table}[!ht]\n\\centering\n\\caption{Table caption}\n\\begin{tabular}{' + 'c'*shu + '}\n' + hang[0]
+                        hang[-1] = hang[-1] + '\n\\end{tabular}\n\\end{table}\n\n'
+                        hang_end = '\n'.join(hang)
+                        new_cha.append(hang_end)
+                    for m in range(len(result_cha)):
+                        savelatex = savelatex.replace(result_cha[m], new_cha[m])
+
+                pattern_pic = re.compile(r'!\[.*?\]\(.*?\)')
+                result_pic = pattern_pic.findall(savelatex)
+                pic_new = []
+                for i in range(len(result_pic)):
+                    pa_ttl = re.compile(r'\[(.*?)\]')
+                    rt_ttl = pa_ttl.findall(result_pic[i])
+                    str_ttl = ''.join(rt_ttl)
+                    ttl = 'Image caption'
+                    if str_ttl != '':
+                        ttl = str_ttl
+                    pattern_pic1 = re.compile(r'\(.*?\.[a-zA-Z]+\)')
+                    result_pic1 = pattern_pic1.findall(result_pic[i])
+                    pic1 = ''.join(result_pic1)
+                    pic1 = pic1.replace('(', '')
+                    pic1 = pic1.replace(')', '')
+                    pic_full = '\\begin{figure}[!htb]\n\\centering\n\\includegraphics[width=0.9\\textwidth]{' + pic1 + '}\n\\caption{'+ ttl +'}\n\\end{figure}'
+                    pic_new.append(pic_full)
+                    continue
+                for i in range(len(result_pic)):
+                    savelatex = savelatex.replace(result_pic[i], pic_new[i])
+
+                pattern_url = re.compile(r'\[.*?\]\(.*?\)')
+                result_url = pattern_url.findall(savelatex)
+                ideal_new = []
+                for i in range(len(result_url)):
+                    pattern_url1 = re.compile(r'\[.*?\]')
+                    result_url1 = pattern_url1.findall(result_url[i])
+                    result_back = ''.join(result_url1)
+                    result_back = result_back.replace('[', '{')
+                    result_back = result_back.replace(']', '}')
+                    pattern_url2 = re.compile(r'\(.*?\)')
+                    result_url2 = pattern_url2.findall(result_url[i])
+                    result_front = ''.join(result_url2)
+                    result_front = result_front.replace('(', '\\href{')
+                    result_front = result_front.replace(')', '}')
+                    ideal_full = result_front + result_back
+                    ideal_new.append(ideal_full)
+                    continue
+                for i in range(len(result_url)):
+                    savelatex = savelatex.replace(result_url[i], ideal_new[i])
+
+                savelatex = re.sub("\*\*(.*?)\*\*", r'\\textbf{\1}', savelatex)
+                savelatex = re.sub("\*(.*?)\*", r'\\textit{\1}', savelatex)
+                savelatex = re.sub("```([\s\S]*?)```", r'\\begin{lstlisting}\1\\end{lstlisting}', savelatex)
+                savelatex = re.sub("`(.*?)`", r'\\lstinline{\1}', savelatex)
+                savelatex = re.sub("<(.*?)>", r'\\href{\1}{\1}', savelatex)
+
+                pattern_emu = re.compile(r'\n(\d+\.\s.*?\n)')
+                result_emu = pattern_emu.findall(savelatex)
+                mae_emu = '\\begin{enumerate}\n\n\n'
+                end_emu = '\n\\end{enumerate}\n'
+                mid_emu = '\n\\end{enumerate}\n\n\\begin{enumerate}\n\n\n'
+                if result_emu != []:
+                    for i in range(len(result_emu)):
+                        savelatex = savelatex.replace(result_emu[i], mae_emu + result_emu[i] + end_emu)
+                    savelatex = savelatex.replace(mid_emu, '\n')
+                    savelatex = re.sub("\n\d\..", r'\\item ', savelatex)
+
+                savelatex = savelatex.replace('---', '{\\noindent}	 \\rule[-10pt]{17.5cm}{0.05em}\\\\')
+
+                pattern_ite = re.compile(r'\n(-\s.*?\n)')
+                result_ite = pattern_ite.findall(savelatex)
+                mae_ite = '\\begin{itemize}\n\n\n'
+                end_ite = '\n\\end{itemize}\n'
+                mid_ite = '\n\\end{itemize}\n\n\\begin{itemize}\n\n\n'
+                if result_ite != []:
+                    for i in range(len(result_ite)):
+                        savelatex = savelatex.replace(result_ite[i], mae_ite + result_ite[i] + end_ite)
+                    savelatex = savelatex.replace(mid_ite, '\n')
+                    savelatex = savelatex.replace('\n- ', '\\item ')
+
+                part_d = '\n' + savelatex
+                if self.widgettem.currentIndex() == 5:
+                    savelatex = savelatex.replace('\\begin{figure}', '\\begin{figure*}')
+                    savelatex = savelatex.replace('\\end{figure}', '\\end{figure*}')
+                    part_d = '\n' + savelatex
+                if self.widgettem.currentIndex() == 6:
+                    savelatex = savelatex.replace('\\section', '\\newpage\n\n\\section')
+                    savelatex = savelatex.replace('\\subsection', '\\newpage\n\n\\subsection')
+                    savelatex = savelatex.replace('\\subsubsection', '\\newpage\n\n\\subsubsection')
+                    part_d = '\n' + savelatex
+
+                part_e = '\n\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+\\renewcommand\\refname{参考文献}
+\\begin{thebibliography}{99}'''
+                if self.widgettem.currentIndex() == 1:
+                    part_e = '\n\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+\\renewcommand\\refname{References}
+\\begin{thebibliography}{99}'''
+                if self.widgettem.currentIndex() == 2:
+                    part_e = ''
+                if self.widgettem.currentIndex() == 3:
+                    part_e = ''
+                if self.widgettem.currentIndex() == 4:
+                    part_e = '\n\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\renewcommand\\refname{References}
+\\begin{thebibliography}{99}'''
+                if self.widgettem.currentIndex() == 5:
+                    part_e = '\n\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{multicols}
+\\newpage%新一页
+
+\\begin{multicols}{2}\\songti \\zihao{5}%宋体字
+\\renewcommand\\refname{参考文献}
+\\begin{thebibliography}{99}'''
+                if self.widgettem.currentIndex() == 6:
+                    part_e = '\n\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\newpage
+\\section{参考文献}
+\\begin{thebibliography}{99}'''
+                if self.widgettem.currentIndex() == 7:
+                    part_e = '\n\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\renewcommand\\refname{参考文献}
+\\begin{thebibliography}{99}'''
+
+                preref = codecs.open('path_ref.txt', 'r', encoding='utf-8').read()
+                preref = preref.replace('[[', '')
+                preref = preref.replace(']]', '')
+                if preref != '':
+                    ref2 = re.sub(r"\[.*]: ", '', preref)
+                    reflist = ref2.split('\n')
+                    i = 0
+                    while i >= 0 and i <= len(reflist) - 1:
+                        reflist[i] = ''.join(lazy_pinyin(reflist[i][0])) + '☆' + reflist[i]
+                        reflist[i] = ''.join(reflist[i])
+                        i = i + 1
+                        continue
+                    reflist2 = sorted(reflist, reverse=False, key=str.lower)
+                    reftostr = '\n'.join(reflist2)
+                    reftostr = re.sub(r"[a-zA-Z]+☆", '', reftostr)
+                    reftostrli = reftostr.split('\n')
+                    i = 0
+                    while i >= 0 and i <= len(reftostrli) - 1:
+                        reftostrli[i] = "\\" + 'bibitem{ref' + str(i + 1) + '}' + reftostrli[i]
+                        reftostrli[i] = ''.join(reftostrli[i])
+                        i = i + 1
+                        continue
+                    reflat = '\n'.join(reftostrli)
+                    reflat = re.sub("\*(.*?)\*", r'\\textit{\1}', reflat)
+                    with open('path_lat.txt', 'w', encoding='utf-8') as flat:
+                        flat.write(reflat)
+                if preref == '':
+                    with open('path_lat.txt', 'w', encoding='utf-8') as flat:
+                        flat.write('')
+                biblat = codecs.open('path_lat.txt', 'r', encoding='utf-8').read()
+                part_f = '\n' + biblat
+                if self.widgettem.currentIndex() == 2:
+                    part_f = ''
+                if self.widgettem.currentIndex() == 3:
+                    part_f = ''
+
+                part_g = '\n' + '''\\end{thebibliography} 
+    
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+\\end{document}'''
+                if self.widgettem.currentIndex() == 1:
+                    part_g = '\n' + '''\\end{thebibliography}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{document}'''
+                if self.widgettem.currentIndex() == 2:
+                    part_g = '\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{document}'''
+                if self.widgettem.currentIndex() == 3:
+                    part_g = '\n' + '''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{document}'''
+                if self.widgettem.currentIndex() == 4:
+                    part_g = '\n' + '''\\end{thebibliography}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+\\end{document}'''
+                if self.widgettem.currentIndex() == 5:
+                    part_g = '\n' + '''\\end{thebibliography} 
+\\end{multicols} 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{document}'''
+                if self.widgettem.currentIndex() == 6:
+                    part_g = '\n' + '''\\end{thebibliography} 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{document}'''
+                if self.widgettem.currentIndex() == 7:
+                    part_g = '\n' + '''\\end{thebibliography}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\end{CJK*}
+\\end{document}'''
+
+                tarname10 = str(self.leii1.text()) + ".tex"
+                fulldir10 = os.path.join(path1, tarname10)
+                lattex = part_a + part_b + part_c + part_d + part_e + part_f + part_g
+                with open(fulldir10, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                with open(fulldir10, 'w', encoding='utf-8') as f1:
+                    f1.write(lattex)
+
+            contendc = self.textii2.toPlainText()
+            patterna = re.compile(r'\[.*<e>\n')
+            resultp = patterna.findall(contendc)
+            resultp = ''.join(resultp)
+            resultp = resultp.rstrip('\n')
+            resultp = resultp.replace('<e>', '')
+            resultp = resultp.replace('<e>\n<e>', '')
+            resultp = resultp.replace('<e><e>', '')
+            with open('path_ref.txt', 'w', encoding='utf-8') as fp:
+                fp.write(resultp)
+
+            itemold = self.choosepart.currentText()
+            self.choosepart.clear()
+            self.choosepart.addItems(['Append at the end (default)'])
+            pathscr = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            tarname1 = str(self.leii1.text()) + ".md"
+            fulldir1 = os.path.join(pathscr, tarname1)
+            maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+            pattern = re.compile(r'## (.*?)\n')
+            result = pattern.findall(maintxt)
+            result = '☆'.join(result)
+            if result != '':
+                result = result.replace('#', '')
+                result = result.replace('# ', '')
+                result = result.replace('Q/P: ', '')
+                result = result.split('☆')
+                if 'References ' in result:
+                    result.remove('References ')
+                for i in range(len(result)):
+                    result[i] = 'After ' + result[i]
+                    result[i] = ''.join(result[i])
+                self.choosepart.addItems(result)
+                if itemold in result:
+                    itemnub = result.index(itemold) + 1
+                    self.choosepart.setCurrentIndex(itemnub)
+                if itemold not in result:
+                    self.choosepart.setCurrentIndex(0)
+
+            oldv = self.textii2.verticalScrollBar().value()
+            pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.leii1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.leii1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.textii2.setPlainText(contend)
+                    self.textii2.verticalScrollBar().setValue(oldv)
+                    if self.textii2.verticalScrollBar().maximum() != 0:
+                        proportion = self.textii2.verticalScrollBar().value() / self.textii2.verticalScrollBar().maximum()
+                        tar_pro = int(self.real2.verticalScrollBar().maximum() * proportion)
+                        self.real2.verticalScrollBar().setValue(tar_pro)
+
+            pathend2 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.textii3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.leii1.text()) + ".tex"
+                fulldirend = os.path.join(pathend2, tarnameend)
+                if self.leii1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.textii3.setPlainText(contend)
+                    self.textii3.ensureCursorVisible()  # 游标可用
+                    cursor = self.textii3.textCursor()  # 设置游标
+                    pos = len(self.textii3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.textii3.setTextCursor(cursor)  # 滚动到游标位置
+
+    def savelat(self):
+        if self.leii1.text() != '' and self.textii3.toPlainText() != '':
+            path1 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.textii3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                patterna = re.compile(r'title\{.*}')
+                resultq = patterna.findall(self.textii3.toPlainText())
+                resultq = ''.join(resultq)
+                resultq = resultq.replace('title{', '')
+                resultq = resultq.replace('}', '')
+                oldnam = codecs.open('path_std.txt', 'r', encoding='utf-8').read()
+                if oldnam != resultq:
+                    self.leii1.setText(resultq)
+                tarname1 = str(self.leii1.text()) + ".tex"
+                fulldir1 = os.path.join(path1, tarname1)
+                saved = self.textii3.toPlainText()
+                with open(fulldir1, 'w', encoding='utf-8') as f1:
+                    f1.write(saved)
+
+            pathend2 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.textii3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.leii1.text()) + ".tex"
+                fulldirend = os.path.join(pathend2, tarnameend)
+                if self.leii1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.textii3.setPlainText(contend)
+                    self.textii3.ensureCursorVisible()  # 游标可用
+                    cursor = self.textii3.textCursor()  # 设置游标
+                    pos = len(self.textii3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.textii3.setTextCursor(cursor)  # 滚动到游标位置
+
+    def save3(self):
+        path1 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+        if path1 == '':
+            self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarname1 = str(self.lec0.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            saved = self.text_s3.toPlainText()
+            if self.lec0.text() != '' and self.text_s3.toPlainText() != '':
+                with open(fulldir1, 'w', encoding='utf-8') as f1:
+                    f1.write(saved)
+
+        pathend = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+        if pathend == '':
+            self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend = str(self.lec0.text()) + ".md"
+            fulldirend = os.path.join(pathend, tarnameend)
+            if self.lec0.text() != '':
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text_s3.setPlainText(contend)
+                self.text_s3.ensureCursorVisible()  # 游标可用
+                cursor = self.text_s3.textCursor()  # 设置游标
+                pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+    def save4(self):
+        path1 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+        if path1 == '':
+            self.text_s4.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarname1 = str(self.lem1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            saved = self.text_s4.toPlainText()
+            if self.lem1.text() != '' and self.text_s4.toPlainText() != '':
+                with open(fulldir1, 'w', encoding='utf-8') as f1:
+                    f1.write(saved)
+
+        pathend = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+        if pathend == '':
+            self.text_s4.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend = str(self.lem1.text()) + ".md"
+            fulldirend = os.path.join(pathend, tarnameend)
+            if self.lem1.text() != '':
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text_s4.setPlainText(contend)
+                self.text_s4.ensureCursorVisible()  # 游标可用
+                cursor = self.text_s4.textCursor()  # 设置游标
+                pos = len(self.text_s4.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text_s4.setTextCursor(cursor)  # 滚动到游标位置
+
+    def focuson(self):
+        if action5.isChecked():
+            action10.setChecked(False)
+            action10.setVisible(False)
+            self.mainii2.setVisible(False)
+            self.main2.setVisible(False)
+            action5.setChecked(True)
+            btna2.setChecked(True)
+            action6.setChecked(False)
+            btna3.setChecked(False)
+            self.description_box.setVisible(True)
+            self.t2.setVisible(True)
+        else:
+            action10.setVisible(True)
+            self.mainii2.setVisible(True)
+            self.main2.setVisible(True)
+            action5.setChecked(False)
+            btna2.setChecked(False)
+
+    def focuson2(self):
+        if btna2.isChecked():
+            action10.setChecked(False)
+            action10.setVisible(False)
+            self.mainii2.setVisible(False)
+            self.main2.setVisible(False)
+            action5.setChecked(True)
+            btna2.setChecked(True)
+            action6.setChecked(False)
+            btna3.setChecked(False)
+            self.description_box.setVisible(True)
+            self.t2.setVisible(True)
+        else:
+            action10.setVisible(True)
+            self.mainii2.setVisible(True)
+            self.main2.setVisible(True)
+            action5.setChecked(False)
+            btna2.setChecked(False)
+
+    def editoron(self):
+        if action6.isChecked():
+            action10.setChecked(False)
+            action10.setVisible(False)
+            self.description_box.setVisible(False)
+            self.t2.setVisible(False)
+            action6.setChecked(True)
+            btna3.setChecked(True)
+            action5.setChecked(False)
+            btna2.setChecked(False)
+            self.mainii2.setVisible(True)
+            self.main2.setVisible(True)
+            self.btn_insia.setVisible(True)
+        else:
+            action10.setVisible(True)
+            self.description_box.setVisible(True)
+            self.t2.setVisible(True)
+            action6.setChecked(False)
+            btna3.setChecked(False)
+            self.btn_insia.setVisible(False)
+
+    def editoron2(self):
+        if btna3.isChecked():
+            action10.setChecked(False)
+            action10.setVisible(False)
+            self.description_box.setVisible(False)
+            self.t2.setVisible(False)
+            action6.setChecked(True)
+            btna3.setChecked(True)
+            action5.setChecked(False)
+            btna2.setChecked(False)
+            self.mainii2.setVisible(True)
+            self.main2.setVisible(True)
+            self.btn_insia.setVisible(True)
+        else:
+            action10.setVisible(True)
+            self.description_box.setVisible(True)
+            self.t2.setVisible(True)
+            action6.setChecked(False)
+            btna3.setChecked(False)
+            self.btn_insia.setVisible(False)
+
+    def realon(self):
+        MOST_WEIGHT = int(self.screen().availableGeometry().width() * 0.75)
+        HALF_WEIGHT = int(self.screen().availableGeometry().width() / 2)
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+
+        if action7.isChecked():
+            md = self.text.toPlainText()
+            newhtml = self.md2html(md)
+            self.real1.setHtml(newhtml)
+            md2 = self.textii2.toPlainText()
+            newhtml2 = self.md2html(md2)
+            self.real2.setHtml(newhtml2)
+            action10.setChecked(False)
+            action10.setVisible(False)
+            btna5.setChecked(True)
+            self.mainii3.setVisible(True)
+            self.main3.setVisible(True)
+            self.bigwi3.setVisible(True)
+            self.resize(MOST_WEIGHT, DE_HEIGHT)
+            self.tab_bar.setVisible(True)
+            with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                f0.write(str(self.width()))
+            if self.i % 2 == 0:
+                self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+            if self.i % 2 ==1:
+                self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+            btna4.setChecked(True)
+            self.btn_00.setStyleSheet('''
+                                                        border: 1px outset grey;
+                                                        background-color: #0085FF;
+                                                        border-radius: 4px;
+                                                        padding: 1px;
+                                                        color: #FFFFFF''')
+        else:
+            action10.setVisible(True)
+            self.mainii3.setVisible(False)
+            self.main3.setVisible(False)
+            self.bigwi3.setVisible(False)
+            btna5.setChecked(False)
+            self.resize(HALF_WEIGHT, DE_HEIGHT)
+            self.tab_bar.setVisible(True)
+            with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                f0.write(str(self.width()))
+            if self.i % 2 == 0:
+                self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+            if self.i % 2 ==1:
+                self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+            btna4.setChecked(True)
+            self.btn_00.setStyleSheet('''
+                                                        border: 1px outset grey;
+                                                        background-color: #0085FF;
+                                                        border-radius: 4px;
+                                                        padding: 1px;
+                                                        color: #FFFFFF''')
+
+    def realon2(self):
+        MOST_WEIGHT = int(self.screen().availableGeometry().width() * 0.75)
+        HALF_WEIGHT = int(self.screen().availableGeometry().width() / 2)
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+
+        if btna5.isChecked():
+            md = self.text.toPlainText()
+            newhtml = self.md2html(md)
+            self.real1.setHtml(newhtml)
+            md2 = self.textii2.toPlainText()
+            newhtml2 = self.md2html(md2)
+            self.real2.setHtml(newhtml2)
+            action10.setChecked(False)
+            action10.setVisible(False)
+            action7.setChecked(True)
+            self.mainii3.setVisible(True)
+            self.main3.setVisible(True)
+            self.bigwi3.setVisible(True)
+            self.resize(MOST_WEIGHT, DE_HEIGHT)
+            self.tab_bar.setVisible(True)
+            with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                f0.write(str(self.width()))
+            if self.i % 2 == 0:
+                self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+            if self.i % 2 ==1:
+                self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+            btna4.setChecked(True)
+            self.btn_00.setStyleSheet('''
+                                                        border: 1px outset grey;
+                                                        background-color: #0085FF;
+                                                        border-radius: 4px;
+                                                        padding: 1px;
+                                                        color: #FFFFFF''')
+        else:
+            action10.setVisible(True)
+            self.mainii3.setVisible(False)
+            self.main3.setVisible(False)
+            self.bigwi3.setVisible(False)
+            action7.setChecked(False)
+            self.resize(HALF_WEIGHT, DE_HEIGHT)
+            self.tab_bar.setVisible(True)
+            with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                f0.write(str(self.width()))
+            if self.i % 2 == 0:
+                self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+            if self.i % 2 ==1:
+                self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+            btna4.setChecked(True)
+            self.btn_00.setStyleSheet('''
+                                                        border: 1px outset grey;
+                                                        background-color: #0085FF;
+                                                        border-radius: 4px;
+                                                        padding: 1px;
+                                                        color: #FFFFFF''')
+
+    def close_re(self):
+        HALF_WEIGHT = int(self.screen().availableGeometry().width() / 2)
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+
+        self.mainii3.setVisible(False)
+        self.main3.setVisible(False)
+        self.bigwi3.setVisible(False)
+        self.resize(HALF_WEIGHT, DE_HEIGHT)
+        with open('win_width.txt', 'w', encoding='utf-8') as f0:
+            f0.write(str(self.width()))
+        action7.setChecked(False)
+        btna5.setChecked(False)
+        action10.setVisible(True)
+        self.tab_bar.setVisible(True)
+        if self.i % 2 == 0:
+            self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+        if self.i % 2 == 1:
+            self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+        btna4.setChecked(True)
+        self.btn_00.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #0085FF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #FFFFFF''')
+
+    def rest_siz(self):
+        HALF_WEIGHT = int(self.screen().availableGeometry().width() / 2)
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+
+        self.resize(HALF_WEIGHT, DE_HEIGHT)
+        with open('win_width.txt', 'w', encoding='utf-8') as f0:
+            f0.write(str(self.width()))
+        self.tab_bar.setVisible(True)
+        if self.i % 2 == 0:
+            self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+        if self.i % 2 == 1:
+            self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+        btna4.setChecked(True)
+        self.btn_00.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #0085FF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #FFFFFF''')
+
+    def stop_dock_icon(self, app_name: str, status: bool = True):
+        PLIST_PATH_TEM = "/Applications/{0}.app/Contents/Info.plist"
+        info_plist = PLIST_PATH_TEM.format(app_name)
+        if os.path.exists(info_plist):
+            with open(info_plist, "rb") as fp:
+                pl = plistlib.load(fp)
+                if status:
+                    pl["LSUIElement"] = "1"
+                else:
+                    pl.pop("LSUIElement", '')
+            with open(info_plist, "wb") as fp:
+                plistlib.dump(pl, fp)
+                #print(f"{app_name} icon is {'hidden' if status else 'shows'} successfully, Please restart it.")
+        else:
+            output = f"Please make sure the app_name is correct, {app_name} is not in /Applications."
+            print("\033[1;31;40m" + output + "\033[0m")
+
+    def hide_dock_choice(self):
+        if action9.isChecked():
+            fire.Fire(self.stop_dock_icon('Strawberry', True))
+            with open('dock_state.txt', 'w', encoding='utf-8') as f1:
+                f1.write('1')
+        else:
+            fire.Fire(self.stop_dock_icon('Strawberry', False))
+            with open('dock_state.txt', 'w', encoding='utf-8') as f1:
+                f1.write('0')
+
+    def compact_mode_on(self):
+        QUARTER_WEIGHT = int(self.screen().availableGeometry().width() * 0.3)
+        HALF_WEIGHT = int(self.screen().availableGeometry().width() / 2)
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        if action10.isChecked():
+            action5.setChecked(False)
+            action5.setVisible(False)
+            action6.setChecked(False)
+            action6.setVisible(False)
+            action7.setChecked(False)
+            action7.setVisible(False)
+            btna2.setChecked(False)
+            btna2.setVisible(False)
+            btna3.setChecked(False)
+            btna3.setVisible(False)
+
+            self.main2.addTab(self.upper1, 'Info')
+            QObjectCleanupHandler().add(self.page2_box_h)
+            QObjectCleanupHandler().add(self.wings_h_box)
+            self.newbox = QVBoxLayout()
+            self.newbox.addWidget(self.main2)
+            self.newbox.addWidget(self.widget0)
+            self.newbox.addWidget(self.tabs)
+            self.art_tab.setLayout(self.newbox)
+
+            QObjectCleanupHandler().add(self.page1_v_box)
+            self.lew1.setFixedHeight(20)
+            self.lew1.setStyleSheet(
+                '''font: 13pt;'''
+            )
+            self.carda.setStyleSheet(
+                '''font: 10pt;'''
+            )
+            self.cardb.setStyleSheet(
+                '''font: 10pt;'''
+            )
+            self.page1_new = QVBoxLayout()
+            self.page1_new.addWidget(self.bigwi2)
+            self.page1_new.addWidget(self.bigwi1)
+            self.word_tab.setLayout(self.page1_new)
+
+            QObjectCleanupHandler().add(self.page3_v_box)
+            self.page3_new = QVBoxLayout()
+            self.page3_new.addWidget(self.mainii2)
+            self.page3_new.addWidget(self.t2)
+            self.insp_tab.setLayout(self.page3_new)
+
+            self.resize(QUARTER_WEIGHT, DE_HEIGHT)
+            self.tab_bar.setVisible(True)
+            with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                f0.write(str(self.width()))
+            if self.i % 2 == 0:
+                self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+            if self.i % 2 ==1:
+                self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+            btna4.setChecked(True)
+            self.read_t1.setVisible(True)
+            self.read_t2.setVisible(True)
+            self.read_t7.setVisible(True)
+            self.read_t3.setVisible(True)
+            self.read_t8.setVisible(True)
+            self.read_t4.setVisible(True)
+            self.read_t5.setVisible(True)
+            self.lbltool06.setVisible(True)
+            self.tool8.setVisible(True)
+            self.btnx4.setVisible(False)
+            self.btn_00.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+        else:
+            action5.setVisible(True)
+            action6.setVisible(True)
+            action7.setVisible(True)
+            btna2.setVisible(True)
+            btna3.setVisible(True)
+
+            self.upper1.deleteLater()
+            QObjectCleanupHandler().add(self.newbox)
+            self.upper1 = QWidget()
+            supper1 = QVBoxLayout()
+            supper1.setContentsMargins(0, 10, 0, 0)
+            supper1.addWidget(self.read_t1)
+            supper1.addWidget(self.read_t2)
+            supper1.addWidget(self.read_t7)
+            supper1.addWidget(self.read_t3)
+            supper1.addWidget(self.web_t3)
+            supper1.addWidget(self.read_t8)
+            supper1.addWidget(self.web_t8)
+            supper1.addWidget(self.read_t4)
+            supper1.addWidget(self.read_t5)
+            supper1.addWidget(self.read_t6)
+            self.upper1.setLayout(supper1)
+            self.wings_h_box = QVBoxLayout()
+            self.wings_h_box.setContentsMargins(0, 0, 0, 0)
+            self.wings_h_box.addWidget(self.upper1)
+            self.wings_h_box.addWidget(self.widget0)
+            self.wings_h_box.addWidget(self.tabs)
+            self.description_box.setLayout(self.wings_h_box)
+            self.page2_box_h = QHBoxLayout()
+            self.page2_box_h.addWidget(self.description_box, 1)
+            self.page2_box_h.addWidget(self.main2, 1)
+            self.page2_box_h.addWidget(self.main3, 1)
+            self.art_tab.setLayout(self.page2_box_h)
+
+            QObjectCleanupHandler().add(self.page1_new)
+            self.lew1.setFixedHeight(60)
+            self.lew1.setStyleSheet(
+                '''font: 30pt;'''
+            )
+            self.carda.setStyleSheet(
+                '''font: 30pt;'''
+            )
+            self.cardb.setStyleSheet(
+                '''font: 30pt;'''
+            )
+            self.page1_v_box = QHBoxLayout()
+            self.page1_v_box.addWidget(self.bigwi1, 1)
+            self.page1_v_box.addWidget(self.bigwi2, 1)
+            self.page1_v_box.addWidget(self.bigwi3, 1)
+            self.word_tab.setLayout(self.page1_v_box)
+
+            QObjectCleanupHandler().add(self.page3_new)
+            self.page3_v_box = QHBoxLayout()
+            self.page3_v_box.addWidget(self.t2, 1)
+            self.page3_v_box.addWidget(self.mainii2, 1)
+            self.page3_v_box.addWidget(self.mainii3, 1)
+            self.insp_tab.setLayout(self.page3_v_box)
+
+            self.resize(HALF_WEIGHT, DE_HEIGHT)
+            self.tab_bar.setVisible(True)
+            with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                f0.write(str(self.width()))
+            if self.i % 2 == 0:
+                self.move_window(SCREEN_WEIGHT - 10, self.pos().y())
+            if self.i % 2 ==1:
+                self.move_window(SCREEN_WEIGHT - self.width() - 3, self.pos().y())
+            btna4.setChecked(True)
+            self.read_t1.setVisible(True)
+            self.read_t2.setVisible(True)
+            self.read_t7.setVisible(True)
+            self.read_t3.setVisible(True)
+            self.read_t8.setVisible(True)
+            self.read_t4.setVisible(True)
+            self.read_t5.setVisible(True)
+            self.lbltool06.setVisible(True)
+            self.tool8.setVisible(True)
+            self.btnx4.setVisible(True)
+            self.btnx4.setText('🔼')
+            self.btn_00.setStyleSheet('''
+                                                        border: 1px outset grey;
+                                                        background-color: #0085FF;
+                                                        border-radius: 4px;
+                                                        padding: 1px;
+                                                        color: #FFFFFF''')
+
+    def addtable(self):
+        poslast = 0
+        if self.leii3.text() != '' and self.leii4.text() != '':
+            c_part1 = '| x |'
+            c_part2 = '|:-:|'
+            colomn_num = 1
+            if int(self.leii4.text()) <= 1:
+                colomn_num = 1
+            if int(self.leii4.text()) > 1:
+                colomn_num = int(self.leii4.text())
+            row_num = 1
+            if int(self.leii3.text()) <= 1:
+                row_num = 1
+            if int(self.leii3.text()) > 1:
+                row_num = int(self.leii3.text()) - 1
+            path3 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if path3 != '' and self.leii1.text() != '':
+                tarname4 = str(self.leii1.text()) + ".md"
+                fulldir4 = os.path.join(path3, tarname4)
+                with open(fulldir4, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+                a = re.sub(r"\[.*<e>\n", '', contm)
+                a = re.sub(r"\n\n\n\n", '', a)
+                a = re.sub(r"## References \n\n", '', a)
+                a = re.sub(r"\n<document-end>", '', a)
+                for i in range(10):
+                    a = a.replace('\r', '☆')
+                    a = a.replace('\n', '☆')
+                    a = a.replace('☆☆☆☆', '☆☆')
+                    a = a.replace('☆☆☆', '☆☆')
+                parta = a.replace('☆', '\n')
+
+                part0 = '\n'
+                part1 = c_part1*colomn_num
+                part1 = part1.replace('||', '|')
+                part1 = '\n' + part1
+                part2 = c_part2*colomn_num
+                part2 = part2.replace('||', '|')
+                part2 = '\n' + part2
+
+                partb = '\n\n\n\n' + '## References '
+                partc = ''
+                tcy = codecs.open('path_ref.txt', 'r', encoding='utf-8').readlines()
+                i = 0
+                while i >= 0 and i <= len(tcy) - 1:
+                    tcy[i] = tcy[i] + '<e>'
+                    tcy[i] = ''.join(tcy[i])
+                    tcy[i] = tcy[i].replace('\n', '')
+                    i = i + 1
+                    continue
+                tcq = ''.join(tcy)
+                tcq = tcq.replace('\n', '')
+                tcq = tcq.replace('<e>', '<e>\n')
+                tcq = tcq.rstrip('\n')
+                qiam = codecs.open('path_ref.txt', 'r', encoding='utf-8').read()
+                if qiam != '':
+                    partc = '\n\n' + tcq
+                if qiam == '':
+                    partc = '\n' + tcq
+                partd = '\n\n<document-end>'
+
+                get_ori = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_pat.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part_n = '\n\n' + get_rst
+
+                last = int(self.choosepart.count() - 1)
+                if self.choosepart.currentIndex() == 0 or self.choosepart.currentIndex() == last:
+                    poslast = len(partb + partc + partd)
+                    with open(fulldir4, 'w', encoding='utf-8') as f0:
+                        f0.write(parta + part0 + part1 + part2 + part1*row_num + partb + partc +partd)
+                if self.choosepart.currentIndex() != 0 and self.choosepart.currentIndex() != last:
+                    with open(fulldir4, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part0 + part1 + part2 + part1*row_num + part_n)
+
+                pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+                if pathend == '':
+                    self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+                else:
+                    tarnameend = str(self.leii1.text()) + ".md"
+                    fulldirend = os.path.join(pathend, tarnameend)
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    posnu = codecs.open('path_pat.txt', 'r', encoding='utf-8').read()
+                    self.textii2.setPlainText(contend)
+                    self.textii2.ensureCursorVisible()  # 游标可用
+                    cursor = self.textii2.textCursor()  # 设置游标
+                    pos = len(self.textii2.toPlainText())  # 获取文本尾部的位置
+                    if posnu != '':
+                        pos = len(self.textii2.toPlainText()) - len(posnu)  # 获取文本尾部的位置
+                    if posnu == '':
+                        pos = len(self.textii2.toPlainText()) - poslast
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.textii2.setTextCursor(cursor)  # 滚动到游标位置
+
+                self.leii3.clear()
+                self.leii4.clear()
+
+    def addimage(self):
+        poslast = 0
+        path3 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if path3 != '' and self.leii1.text() != '':
+            tarname4 = str(self.leii1.text()) + ".md"
+            fulldir4 = os.path.join(path3, tarname4)
+            with open(fulldir4, 'a', encoding='utf-8') as f0:
+                f0.write('')
+            contm = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+            file_name, ok = QFileDialog.getOpenFileName(self, "Open File", path3)
+            if file_name != '':
+                part1 = '\n\n!['
+                part2 = 'Image caption]'
+                if self.leii5.text() != '':
+                    part2 = str(self.leii5.text()) + ']'
+                part3 = '(' + str(file_name) + ')'
+
+                a = re.sub(r"\[.*<e>\n", '', contm)
+                a = re.sub(r"\n\n\n\n", '', a)
+                a = re.sub(r"## References \n\n", '', a)
+                a = re.sub(r"\n<document-end>", '', a)
+                for i in range(10):
+                    a = a.replace('\r', '☆')
+                    a = a.replace('\n', '☆')
+                    a = a.replace('☆☆☆☆', '☆☆')
+                    a = a.replace('☆☆☆', '☆☆')
+                parta = a.replace('☆', '\n')
+                partb = '\n\n\n\n' + '## References '
+                partc = ''
+                tcy = codecs.open('path_ref.txt', 'r', encoding='utf-8').readlines()
+                i = 0
+                while i >= 0 and i <= len(tcy) - 1:
+                    tcy[i] = tcy[i] + '<e>'
+                    tcy[i] = ''.join(tcy[i])
+                    tcy[i] = tcy[i].replace('\n', '')
+                    i = i + 1
+                    continue
+                tcq = ''.join(tcy)
+                tcq = tcq.replace('\n', '')
+                tcq = tcq.replace('<e>', '<e>\n')
+                tcq = tcq.rstrip('\n')
+                qiam = codecs.open('path_ref.txt', 'r', encoding='utf-8').read()
+                if qiam != '':
+                    partc = '\n\n' + tcq
+                if qiam == '':
+                    partc = '\n' + tcq
+                partd = '\n\n<document-end>'
+
+                get_ori = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_pat.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part_n = '\n\n' + get_rst
+
+                last = int(self.choosepart.count() - 1)
+                if self.choosepart.currentIndex() == 0 or self.choosepart.currentIndex() == last:
+                    poslast = len(partb + partc + partd)
+                    with open(fulldir4, 'w', encoding='utf-8') as f0:
+                        f0.write(parta + part1 + part2 + part3 + partb + partc + partd)
+                if self.choosepart.currentIndex() != 0 and self.choosepart.currentIndex() != last:
+                    with open(fulldir4, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part2 + part3 + part_n)
+
+                pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+                if pathend == '':
+                    self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+                else:
+                    tarnameend = str(self.leii1.text()) + ".md"
+                    fulldirend = os.path.join(pathend, tarnameend)
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    posnu = codecs.open('path_pat.txt', 'r', encoding='utf-8').read()
+                    self.textii2.setPlainText(contend)
+                    self.textii2.ensureCursorVisible()  # 游标可用
+                    cursor = self.textii2.textCursor()  # 设置游标
+                    pos = len(self.textii2.toPlainText())  # 获取文本尾部的位置
+                    if posnu != '':
+                        pos = len(self.textii2.toPlainText()) - len(posnu)  # 获取文本尾部的位置
+                    if posnu == '':
+                        pos = len(self.textii2.toPlainText()) - poslast
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.textii2.setTextCursor(cursor)  # 滚动到游标位置
+
+                self.leii5.clear()
+
+    def md2html(self, mdstr):
+        extras = ['code-friendly', 'fenced-code-blocks', 'footnotes', 'tables', 'code-color', 'pyshell', 'nofollow',
+                  'cuddled-lists', 'header ids', 'nofollow']
+
+        html = """
+        <html>
+        <head>
+        <meta content="text/html; charset=utf-8" http-equiv="content-type" />
+        <style>
+            .hll { background-color: #ffffcc }
+            .c { color: #0099FF; font-style: italic } /* Comment */
+            .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+            .k { color: #006699; font-weight: bold } /* Keyword */
+            .o { color: #555555 } /* Operator */
+            .ch { color: #0099FF; font-style: italic } /* Comment.Hashbang */
+            .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+            .cp { color: #009999 } /* Comment.Preproc */
+            .cpf { color: #0099FF; font-style: italic } /* Comment.PreprocFile */
+            .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+            .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+            .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+            .ge { font-style: italic } /* Generic.Emph */
+            .gr { color: #FF0000 } /* Generic.Error */
+            .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+            .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+            .go { color: #AAAAAA } /* Generic.Output */
+            .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+            .gs { font-weight: bold } /* Generic.Strong */
+            .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+            .gt { color: #99CC66 } /* Generic.Traceback */
+            .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+            .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+            .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+            .kp { color: #006699 } /* Keyword.Pseudo */
+            .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+            .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+            .m { color: #FF6600 } /* Literal.Number */
+            .s { color: #CC3300 } /* Literal.String */
+            .na { color: #330099 } /* Name.Attribute */
+            .nb { color: #336666 } /* Name.Builtin */
+            .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+            .no { color: #336600 } /* Name.Constant */
+            .nd { color: #9999FF } /* Name.Decorator */
+            .ni { color: #999999; font-weight: bold } /* Name.Entity */
+            .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+            .nf { color: #CC00FF } /* Name.Function */
+            .nl { color: #9999FF } /* Name.Label */
+            .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+            .nt { color: #330099; font-weight: bold } /* Name.Tag */
+            .nv { color: #003333 } /* Name.Variable */
+            .ow { color: #000000; font-weight: bold } /* Operator.Word */
+            .w { color: #bbbbbb } /* Text.Whitespace */
+            .mb { color: #FF6600 } /* Literal.Number.Bin */
+            .mf { color: #FF6600 } /* Literal.Number.Float */
+            .mh { color: #FF6600 } /* Literal.Number.Hex */
+            .mi { color: #FF6600 } /* Literal.Number.Integer */
+            .mo { color: #FF6600 } /* Literal.Number.Oct */
+            .sa { color: #CC3300 } /* Literal.String.Affix */
+            .sb { color: #CC3300 } /* Literal.String.Backtick */
+            .sc { color: #CC3300 } /* Literal.String.Char */
+            .dl { color: #CC3300 } /* Literal.String.Delimiter */
+            .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+            .s2 { color: #CC3300 } /* Literal.String.Double */
+            .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+            .sh { color: #CC3300 } /* Literal.String.Heredoc */
+            .si { color: #AA0000 } /* Literal.String.Interpol */
+            .sx { color: #CC3300 } /* Literal.String.Other */
+            .sr { color: #33AAAA } /* Literal.String.Regex */
+            .s1 { color: #CC3300 } /* Literal.String.Single */
+            .ss { color: #FFCC33 } /* Literal.String.Symbol */
+            .bp { color: #336666 } /* Name.Builtin.Pseudo */
+            .fm { color: #CC00FF } /* Name.Function.Magic */
+            .vc { color: #003333 } /* Name.Variable.Class */
+            .vg { color: #003333 } /* Name.Variable.Global */
+            .vi { color: #003333 } /* Name.Variable.Instance */
+            .vm { color: #003333 } /* Name.Variable.Magic */
+            .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+            table {
+                    font-family: verdana,arial,sans-serif;
+                    font-size:11px;
+                    color:#333333;
+                    border-width: 1px;
+                    border-color: #999999;
+                    border-collapse: collapse;
+                    }
+            th {
+                background:#b5cfd2 url('cell-blue.jpg');
+                border-width: 1px;
+                padding: 8px;
+                border-style: solid;
+                border-color: #999999;
+                }
+            td {
+                background:#dcddc0 url('cell-grey.jpg');
+                border-width: 1px;
+                padding: 8px;
+                border-style: solid;
+                border-color: #999999;
+                }
+        </style>
+        </head>
+        <body>
+            %s
+        </body>
+        </html>
+        """
+        ret = markdown2.markdown(mdstr, extras=extras)
+        return html % ret
+
+    def on_text_textChanged(self):
+        if action7.isChecked():
+            md = self.text.toPlainText()
+            newhtml = self.md2html(md)
+            self.real1.setHtml(newhtml)
+            if self.text.verticalScrollBar().maximum() != 0:
+                proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                self.real1.verticalScrollBar().setValue(tar_pro)
+
+    def scr_cha(self):
+        if self.text.verticalScrollBar().maximum() != 0 and action7.isChecked():
+            proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+            tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+            self.real1.verticalScrollBar().setValue(tar_pro)
+
+    def on_text2_textChanged(self):
+        if action7.isChecked():
+            md = self.textii2.toPlainText()
+            newhtml = self.md2html(md)
+            self.real2.setHtml(newhtml)
+            if self.textii2.verticalScrollBar().maximum() != 0:
+                proportion = self.textii2.verticalScrollBar().value() / self.textii2.verticalScrollBar().maximum()
+                tar_pro = int(self.real2.verticalScrollBar().maximum() * proportion)
+                self.real2.verticalScrollBar().setValue(tar_pro)
+
+    def scr_cha2(self):
+        if self.textii2.verticalScrollBar().maximum() != 0 and action7.isChecked():
+            proportion = self.textii2.verticalScrollBar().value() / self.textii2.verticalScrollBar().maximum()
+            tar_pro = int(self.real2.verticalScrollBar().maximum() * proportion)
+            self.real2.verticalScrollBar().setValue(tar_pro)
+
+    def card1changed(self):
+        md = self.carda.toPlainText()
+        self.card_rt.setText(md)
+        self.card_rt.setAlignment(Qt.AlignmentFlag.AlignCenter)
+
+        if self.carda.verticalScrollBar().maximum() != 0:
+            proportion = self.carda.verticalScrollBar().value() / self.carda.verticalScrollBar().maximum()
+            tar_pro = int(self.card_rt.verticalScrollBar().maximum() * proportion)
+            self.card_rt.verticalScrollBar().setValue(tar_pro)
+
+    def card1scroll(self):
+        if self.carda.verticalScrollBar().maximum() != 0:
+            proportion = self.carda.verticalScrollBar().value() / self.carda.verticalScrollBar().maximum()
+            tar_pro = int(self.card_rt.verticalScrollBar().maximum() * proportion)
+            self.card_rt.verticalScrollBar().setValue(tar_pro)
+
+    def card2changed(self):
+        md = self.cardb.toPlainText()
+        self.card_rt2.setText(md)
+        self.card_rt2.setAlignment(Qt.AlignmentFlag.AlignCenter)
+
+        if self.cardb.verticalScrollBar().maximum() != 0:
+            proportion = self.cardb.verticalScrollBar().value() / self.cardb.verticalScrollBar().maximum()
+            tar_pro = int(self.card_rt2.verticalScrollBar().maximum() * proportion)
+            self.card_rt2.verticalScrollBar().setValue(tar_pro)
+
+    def card2scroll(self):
+        if self.cardb.verticalScrollBar().maximum() != 0:
+            proportion = self.cardb.verticalScrollBar().value() / self.cardb.verticalScrollBar().maximum()
+            tar_pro = int(self.card_rt2.verticalScrollBar().maximum() * proportion)
+            self.card_rt2.verticalScrollBar().setValue(tar_pro)
+
+    def add_to_wait(self):
+        if self.lew1.text() != '':
+            home_dir = str(Path.home())
+            tarname1 = "StrawberryAppPath"
+            fulldir1 = os.path.join(home_dir, tarname1)
+            if not os.path.exists(fulldir1):
+                os.mkdir(fulldir1)
+            tarname2 = "wordwaitinglist.txt"
+            fulldir2 = os.path.join(fulldir1, tarname2)
+            contend = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            alllist = contend.split('\n')
+            for i in range(len(alllist)):
+                if alllist[i].lower() == str(self.lew1.text().lower()):
+                    wri0 = 'This expression has been on the list!'
+                    self.lblexp_2.setText(wri0)
+                    self.lew1.clear()
+                    continue
+                else:
+                    continue
+            if self.lew1.text() != '':
+                corepart = self.lew1.text() + '\n'
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write(corepart)
+                contend2 = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                alllist2 = contend2.split('\n')
+                alllist2.sort()
+                if '' in alllist2:
+                    alllist2.remove('')
+                self.wid_word.clear()
+                self.wid_word.addItems(alllist2)
+                num = len(alllist2)
+                wri = 'There are ' + str(num) + ' expressions on your list now!'
+                self.lblexp_2.setText(wri)
+                self.lew1.clear()
+
+    def importlist(self):
+        home_dir = str(Path.home())
+        file_name, ok = QFileDialog.getOpenFileName(self, "Open File", home_dir, "Text Files (*.txt)")
+        if file_name != '':
+            contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+            tarname1 = "StrawberryAppPath"
+            fulldir1 = os.path.join(home_dir, tarname1)
+            if not os.path.exists(fulldir1):
+                os.mkdir(fulldir1)
+            tarname2 = "wordwaitinglist.txt"
+            fulldir2 = os.path.join(fulldir1, tarname2)
+            with open(fulldir2, 'a', encoding='utf-8') as f0:
+                f0.write(contend + '\n')
+            contend2 = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            alllist2 = contend2.split('\n')
+            alllist2.sort()
+            if '' in alllist2:
+                alllist2.remove('')
+            num = len(alllist2)
+            wri = 'There are ' + str(num) + ' expressions on your list now!'
+            self.lblexp_2.setText(wri)
+            self.wid_word.clear()
+            self.wid_word.addItems(alllist2)
+
+    def createdeck(self):
+        home_dir = str(Path.home())
+        tarname1 = "StrawberryAppPath"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.mkdir(fulldir1)
+        tarname2 = 'MyDecks'
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        if not os.path.exists(fulldir2):
+            os.mkdir(fulldir2)
+        if self.lew2.text() != '':
+            endname = self.lew2.text() + '.txt'
+            fulldir3 = os.path.join(fulldir2, endname)
+            with open(fulldir3, 'w', encoding='utf-8') as f0:
+                f0.write('')
+            with open('path_dec.txt', 'w', encoding='utf-8') as f0:
+                f0.write(fulldir3)
+            self.lew2.setText(endname.replace('.txt', ''))
+            self.lew2.setEnabled(False)
+
+    def opendeck(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getOpenFileName(self, "Open File", home_dir, "Text Files (*.txt)")
+        if fj != '':
+            str_fj = ''.join(fj)
+            str_fj = str_fj.replace('Text Files (*.txt)', '')
+            lst_fj = str_fj.split('/')
+            if '.txt' in lst_fj[-1]:
+                endname = lst_fj[-1].replace('.txt', '')
+                self.lew2.setText(endname)
+                self.lew2.setEnabled(False)
+                with open('path_dec.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(str_fj)
+
+    def closedeck(self):
+        with open('path_dec.txt', 'w', encoding='utf-8') as f0:
+            f0.write('')
+        self.lew2.clear()
+        self.lew2.setEnabled(True)
+        self.carda.clear()
+        self.cardb.clear()
+
+    def search_on_web(self):
+        searchcon = self.wid_word.currentText()
+        fullurl = 'https://www.collinsdictionary.com/dictionary/english/' + str(searchcon.lower())
+        webbrowser.open(fullurl)
+
+    def makecard(self):
+        if self.textw1.toPlainText() != '' and self.lew2.text() != '' and self.wid_word.currentText() != 'None' and self.wid_word.currentText() != '':
+            deck_path = codecs.open('path_dec.txt', 'r', encoding='utf-8').read()
+            part1 = str(self.wid_word.currentText().lower())
+            part1_5 = '\t'
+            tags = str(self.lew3.text()).replace('、', ' #')
+            part2 = str(self.textw1.toPlainText().replace('\n', '<br>')) + '<br>#' + tags + '\t'
+            with open(deck_path, 'a', encoding='utf-8') as f0:
+                f0.write(part1 + part1_5 + part2 + '\n')
+            home_dir = str(Path.home())
+            tarname1 = "StrawberryAppPath"
+            fulldir1 = os.path.join(home_dir, tarname1)
+            if not os.path.exists(fulldir1):
+                os.mkdir(fulldir1)
+            tarname2 = "wordwaitinglist.txt"
+            fulldir2 = os.path.join(fulldir1, tarname2)
+            ori_con = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            lst_ori = ori_con.split('\n')
+            if str(self.wid_word.currentText()) in lst_ori:
+                lst_ori.remove(str(self.wid_word.currentText()))
+            new_con = '\n'.join(lst_ori)
+            with open(fulldir2, 'w', encoding='utf-8') as f0:
+                f0.write(new_con)
+            contend2 = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            alllist2 = contend2.split('\n')
+            alllist2.sort()
+            if '' in alllist2:
+                alllist2.remove('')
+            num = len(alllist2)
+            wri = 'There are ' + str(num) + ' words on your list now!'
+            self.lblexp_2.setText(wri)
+            wlstnum = self.wid_word.currentIndex()
+            wlstmax = self.wid_word.count()
+            self.wid_word.clear()
+            self.wid_word.addItems(alllist2)
+            self.textw1.clear()
+            self.lew3.clear()
+            self.carda.setPlainText(part1)
+            self.cardb.setPlainText(part2)
+            tarnum = 0
+            if wlstnum > 0 and wlstnum < wlstmax - 1:
+                tarnum = wlstnum
+            if wlstnum == 0:
+                tarnum = 0
+            if wlstnum != 0 and wlstnum == wlstmax - 1:
+                tarnum = wlstnum - 1
+            self.wid_word.setCurrentIndex(tarnum)
+
+    def next_card(self):
+        self.carda.clear()
+        self.cardb.clear()
+
+    def searchmeaning(self):
+        if self.lew2.text() != '' and self.lew4.text() != '':
+            searchnote = '#' + str(self.lew4.text())
+            home_dir = str(Path.home())
+            tarname1 = "StrawberryAppPath"
+            fulldir1 = os.path.join(home_dir, tarname1)
+            if not os.path.exists(fulldir1):
+                os.mkdir(fulldir1)
+            tarname2 = 'MyDecks'
+            fulldir2 = os.path.join(fulldir1, tarname2)
+            tarname3 = str(self.lew2.text()) + ".txt"
+            fulldir3 = os.path.join(fulldir2, tarname3)
+            ori_dek = codecs.open(fulldir3, 'r', encoding='utf-8').read()
+            ori_lst = ori_dek.split('\n')
+            new_lst = []
+            for i in range(len(ori_lst)):
+                if searchnote in ori_lst[i]:
+                    new_lst.append(ori_lst[i])
+                    continue
+                else:
+                    continue
+            new_lst2 = []
+            for i in range(len(new_lst)):
+                new_lst[i] = new_lst[i].split('\t')
+                if '' in new_lst[i]:
+                    new_lst[i].remove('')
+                new_lst2.append(new_lst[i])
+            new_dict = dict(new_lst2)
+            waittopri = str(new_dict.keys())
+            waittopri = waittopri.replace('dict_keys([', '')
+            waittopri = waittopri.replace('])', '')
+            waittopri = waittopri.replace("'", '')
+            waittopri = waittopri.replace(', ', '\n')
+            self.text_res.setPlainText(waittopri)
+            #print(waittopri)
+
+    def newsearch(self):
+        self.lew4.clear()
+        self.text_res.clear()
+
+    def editcardsave(self):
+        if self.carda.toPlainText() != '' and self.cardb.toPlainText() != '':
+            deck_path = codecs.open('path_dec.txt', 'r', encoding='utf-8').read()
+            ori_cont = codecs.open(deck_path, 'r', encoding='utf-8').read()
+            ori_lst = ori_cont.split('\n')
+            if '' in ori_lst:
+                ori_lst.remove('')
+            ori_lst.remove(ori_lst[-1])
+            new_cont = '\n'.join(ori_lst) + '\n'
+            with open(deck_path, 'w', encoding='utf-8') as f0:
+                f0.write(new_cont)
+            title = self.carda.toPlainText() + '\t'
+            content = self.cardb.toPlainText()
+            with open(deck_path, 'a', encoding='utf-8') as f0:
+                f0.write(title + content + '\n')
+
+    def pin_a_tab(self):
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+        WINDOW_WEIGHT = int(self.width())
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        if self.pos().x() + WINDOW_WEIGHT + 4 < SCREEN_WEIGHT and self.pos().x() > 4:
+            self.btn_00.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        else:
+            target_x = 0
+            if self.i % 2 == 1:
+                win_old_width = codecs.open('win_width.txt', 'r', encoding='utf-8').read()
+                if self.pos().x() + WINDOW_WEIGHT >= SCREEN_WEIGHT: # 右侧显示
+                    target_x = SCREEN_WEIGHT - int(win_old_width) - 3
+                btna4.setChecked(True)
+                self.btn_00.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.tab_bar.setVisible(True)
+                self.resize(int(win_old_width), DE_HEIGHT)
+            if self.i % 2 == 0:
+                if self.pos().x() + WINDOW_WEIGHT + 4 >= SCREEN_WEIGHT:  # 右侧隐藏
+                    target_x = SCREEN_WEIGHT - 10
+                btna4.setChecked(False)
+                self.btn_00.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+                self.tab_bar.setVisible(False)
+                with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(str(self.width()))
+                self.resize(self.new_width, DE_HEIGHT)
+            self.move_window(target_x, self.pos().y())
+
+    def pin_a_tab2(self):
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+        WINDOW_WEIGHT = int(self.width())
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        if self.pos().x() + WINDOW_WEIGHT + 4 < SCREEN_WEIGHT and self.pos().x() > 4:
+            self.btn_00.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        else:
+            target_x = 0
+            if self.i % 2 == 1:
+                win_old_width = codecs.open('win_width.txt', 'r', encoding='utf-8').read()
+                if self.pos().x() + WINDOW_WEIGHT >= SCREEN_WEIGHT: # 右侧显示
+                    target_x = SCREEN_WEIGHT - int(win_old_width) - 3
+                btna4.setChecked(True)
+                self.btn_00.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.tab_bar.setVisible(True)
+                self.resize(int(win_old_width), DE_HEIGHT)
+            if self.i % 2 == 0:
+                if self.pos().x() + WINDOW_WEIGHT + 4 >= SCREEN_WEIGHT:  # 右侧隐藏
+                    target_x = SCREEN_WEIGHT - 10
+                btna4.setChecked(False)
+                self.btn_00.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+                self.tab_bar.setVisible(False)
+                with open('win_width.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(str(self.width()))
+                self.resize(self.new_width, DE_HEIGHT)
+            self.move_window(target_x, self.pos().y())
+
+    def cleanlinebreak(self, a):  # 设置清除断行的基本代码块
+        for i in range(10):
+            a = a.replace('\r', ' ')
+            a = a.replace('\n', ' ')
+        return a
+
+    def cleancitmak(self, a):
+        a = re.sub(r"\{(\s)*(\d+\s)*(\d)*?\}|\[(\s)*(\d+\s)*(\d)*?\]|〔(\s)*(\d+\s)*(\d)*?〕|﹝(\s)*(\d+\s)*(\d)*?﹞", "",
+                   a)
+        a = re.sub(
+            r"\[(\s)*(\d+\s)*(\d)*?〕|\[(\s)*(\d+\s)*(\d)*?﹞|〔(\s)*(\d+\s)*(\d)*?\]|〔(\s)*(\d+\s)*(\d)*?﹞|﹝(\s)*(\d+\s)*(\d)*?\]|﹝(\s)*(\d+\s)*(\d)*?〕",
+            "", a)
+        a = re.sub(
+            r"((\s)*(\d+\s)*(\d)*?)|\[(\s)*(\d+\s)*(\d)*?)|((\s)*(\d+\s)*(\d)*?\]|((\s)*(\d+\s)*(\d)*?】|【(\s)*(\d+\s)*(\d)*?)",
+            "", a)
+        a = re.sub(
+            r"\((\s)*(\d+\s)*(\d)*?〕|\((\s)*(\d+\s)*(\d)*?﹞|〔(\s)*(\d+\s)*(\d)*?\)|﹝(\s)*(\d+\s)*(\d)*?\)|\((\s)*(\d+\s)*(\d)*?\)|\[(\s)*(\d+\s)*(\d)*?\)|\((\s)*(\d+\s)*(\d)*?\]",
+            "", a)
+        a = re.sub(r"\<(\s)*(\d+\s)*(\d)*?\>|\《(\s)*(\d+\s)*(\d)*?\》|\〈(\s)*(\d+\s)*(\d)*?\〉|\<(\s)*(\d+\s)*(\d)*?\>",
+                   "", a)
+        a = re.sub(r"\<(\s)*(\d+\s)*(\d)*?\》|\<(\s)*(\d+\s)*(\d)*?\〉|\<(\s)*(\d+\s)*(\d)*?\>",
+                   "", a)
+        a = re.sub(r"\《(\s)*(\d+\s)*(\d)*?\>|\《(\s)*(\d+\s)*(\d)*?\〉|\《(\s)*(\d+\s)*(\d)*?\>",
+                   "", a)
+        a = re.sub(r"\〈(\s)*(\d+\s)*(\d)*?\>|\〈(\s)*(\d+\s)*(\d)*?\》|\〈(\s)*(\d+\s)*(\d)*?\>",
+                   "", a)
+        a = re.sub(r"\<(\s)*(\d+\s)*(\d)*?\>|\<(\s)*(\d+\s)*(\d)*?\》|\<(\s)*(\d+\s)*(\d)*?\〉",
+                   "", a)
+        return a
+
+    def default_clean(self, a):  # 最基本功能块
+        # 【共同块】不管是全中文/全英文/中英混排,都需要清除的不规范的符号与排版
+        # 清除文档排版符号
+        a = a.replace('\t', '')
+
+        # 清除连续空格(如连续两个和三个空格)
+        for i in range(10):
+            a = a.replace('   ', ' ')
+            a = a.replace('  ', ' ')
+            a = a.replace(',,,', ',')
+            a = a.replace(',,', ',')
+            a = a.replace(',,,', ',')
+            a = a.replace(',,', ',')
+
+        # 清除那些引用标记(括号内为纯数字),如圈圈数字和方括号引用,同时由于方括号和六角括号混用较多,清理前后不搭的情况中的引用符号
+        a = re.sub(u'\u24EA|[\u2460-\u2473]|[\u3251-\u325F]|[\u32B1-\u32BF]|[\u2776-\u277F]|\u24FF|[\u24EB-\u24F4]',
+                   "", a)
+        a = a.replace('◎', '')
+        a = a.replace('®', '')
+        a = a.replace('*', '')
+
+        # 错误标点纠正:将奇怪的弯引号换为正常的弯引号,为下面执行弯引号与直引号的清除提供条件
+        a = a.replace('〞', '”')
+        a = a.replace('〝', '“')
+
+        # 错误标点纠正:将角分符号(′)替换为弯引号(若需要使用角分符号则不运行此条)
+        a = a.replace('′', "’")
+        # 错误标点纠正:将角秒符号(″)替换为弯引号(若需要使用角秒符号则不运行此条)
+        a = a.replace('″', '”')
+
+        # 错误标点纠正1(两个同向单引号变成一个双引号<前>,改为前后弯双引号)
+        pattern = re.compile(r'‘‘(.*?)”')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('‘‘{}”'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正2(两个同向单引号变成一个双引号<后>,改为前后弯双引号)
+        p1 = r"(?<=“).+?(?=’’)"
+        pattern1 = re.compile(p1)
+        result = pattern1.findall(a)
+        for i in result:
+            a = a.replace('“{}’’'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正3(前后两个单引号变成一组双引号)
+        pattern = re.compile(r'‘‘(.*?)’’')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('‘‘{}’’'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正4(两个同向双引号去掉一个<前>)
+        pattern = re.compile(r'““(.*?)”')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('““{}”'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正5(两个同向双引号去掉一个<后>)
+        p1 = r"(?<=“).+?(?=””)"
+        pattern1 = re.compile(p1)
+        result = pattern1.findall(a)
+        for i in result:
+            a = a.replace('“{}””'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正6(两组双引号变成一组双引号)
+        pattern = re.compile(r'““(.*?)””')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('““{}””'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正7(前直单引号<前>,后弯双引号<后>,改为前后弯双引号)
+        pattern = re.compile(r"'(.*?)”")
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace("'{}”".format(i), '“{}”'.format(i))
+
+        # 错误标点纠正8(前直双引号<前>,后弯双引号<后>,改为前后弯双引号)
+        pattern = re.compile(r'"(.*?)”')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('"{}”'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正9(前弯双引号<前>,后直单引号<后>,改为前后弯双引号)
+        p1 = r"(?<=“).+?(?=')"
+        pattern1 = re.compile(p1)
+        result = pattern1.findall(a)
+        for i in result:
+            a = a.replace("“{}'".format(i), '“{}”'.format(i))
+
+        # 错误标点纠正10(前弯双引号<前>,后直双引号<后>,改为前后弯双引号)
+        p1 = r'(?<=“).+?(?=")'
+        pattern1 = re.compile(p1)
+        result = pattern1.findall(a)
+        for i in result:
+            a = a.replace('“{}"'.format(i), '“{}”'.format(i))
+
+        # 将成对的直双引号改为成对的弯双引号
+        pattern = re.compile(r'"(.*?)"')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('"{}"'.format(i), '“{}”'.format(i))
+
+        # 将成对的直单引号改为成对的弯单引号
+        pattern = re.compile(r"'(.*?)'")
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace("'{}'".format(i), "‘{}’".format(i))
+
+        # 对文段进行再次多余部分的清洗
+        # 错误标点纠正1(两个同向单引号变成一个双引号<前>,改为前后弯双引号)
+        pattern = re.compile(r'‘‘(.*?)”')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('‘‘{}”'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正2(两个同向单引号变成一个双引号<后>,改为前后弯双引号)
+        p1 = r"(?<=“).+?(?=’’)"
+        pattern1 = re.compile(p1)
+        result = pattern1.findall(a)
+        for i in result:
+            a = a.replace('“{}’’'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正3(前后两个单引号变成一组双引号)
+        pattern = re.compile(r'‘‘(.*?)’’')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('‘‘{}’’'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正4(两个同向双引号去掉一个<前>)
+        pattern = re.compile(r'““(.*?)”')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('““{}”'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正5(两个同向双引号去掉一个<后>)
+        p1 = r"(?<=“).+?(?=””)"
+        pattern1 = re.compile(p1)
+        result = pattern1.findall(a)
+        for i in result:
+            a = a.replace('“{}””'.format(i), '“{}”'.format(i))
+
+        # 错误标点纠正6(两组双引号变成一组双引号)
+        pattern = re.compile(r'““(.*?)””')
+        result = pattern.findall(a)
+        for i in result:
+            a = a.replace('““{}””'.format(i), '“{}”'.format(i))
+
+        # 将单独的单双直引号替换为空(清除剩余的直引号)
+        a = a.replace("'", '')
+        a = a.replace('"', '')
+
+        # 【判断块】判断文段是全中文、全英文还是中英混排。
+        def containenglish(str0):  # 判断是否包含英文字母
+            import re
+            return bool(re.search('[a-zA-Za-zA-Z]', str0))
+
+        def is_contain_chinese(check_str):  # 判断是否包含中文字
+            for ch in check_str:
+                if u'\u4e00' <= ch <= u'\u9fff':
+                    return True
+            return False
+
+        def is_contain_num(str0):  # 判断是否包含数字
+            import re
+            return bool(re.search('[0-90-9]', str0))
+
+        def is_contain_symbol(keyword):
+            if re.search(r"\W", keyword):
+                return True
+            else:
+                return False
+
+        if is_contain_num(str(a)) and not containenglish(str(a)) and not is_contain_chinese(str(a)):
+            # 【全数块】清除数字中的空格,将全角数字转为半角数字
+            a = a.replace(' ', '')
+
+            def is_Qnumber(uchar):
+                """判断一个unicode是否是全角数字"""
+                if uchar >= u'\uff10' and uchar <= u'\uff19':
+                    return True
+                else:
+                    return False
+
+            def Q2B(uchar):
+                """单个字符 全角转半角"""
+                inside_code = ord(uchar)
+                if inside_code == 0x3000:
+                    inside_code = 0x0020
+                else:
+                    inside_code -= 0xfee0
+                if inside_code < 0x0020 or inside_code > 0x7e:  # 转完之后不是半角字符返回原来的字符
+                    return uchar
+                return chr(inside_code)
+
+            def stringpartQ2B(ustring):
+                """把字符串中数字全角转半角"""
+                return "".join(
+                    [Q2B(uchar) if is_Qnumber(uchar) else uchar for uchar in ustring])
+
+            a = stringpartQ2B(a)
+
+            # 对全数字文段的货币符号、百分号和度数这三个符号进行专门处理
+            i = 0
+            while i <= len(a) - 1:
+                if a[i] == '¥' and not is_contain_symbol(str(a[i - 1])):
+                    a = list(a)
+                    a.insert(i, ' ')
+                    a = ''.join(a)
+                    i = i + 2
+                    continue
+                if a[i] == '$' and not is_contain_symbol(str(a[i - 1])):
+                    a = list(a)
+                    a.insert(i, ' ')
+                    a = ''.join(a)
+                    i = i + 2
+                    continue
+                if a[i] == "%":
+                    if a[i - 1] == ' ':
+                        a = list(a)
+                        del a[i - 1]
+                        a = ''.join(a)
+                        i = i - 1
+                        continue
+                    else:
+                        a = list(a)
+                        a.insert(i + 1, ' ')
+                        a = ''.join(a)
+                        i = i + 2
+                        continue
+                if a[i] == "°":
+                    if a[i - 1] == ' ':
+                        a = list(a)
+                        del a[i - 1]
+                        a = ''.join(a)
+                        i = i - 1
+                        continue
+                    else:
+                        a = list(a)
+                        a.insert(i + 1, ' ')
+                        a = ''.join(a)
+                        i = i + 2
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            a = a.replace('  ', ' ')
+            return a
+
+        elif not containenglish(str(a)) and is_contain_chinese(str(a)):
+            # 【中(数)块】
+            # 去除不必要的中英文符号及空格
+            a = a.replace('*', '')
+            a = a.replace(' ', '')
+            a = a.replace('#', '')
+            # a = a.replace('^', '')
+            a = a.replace('~', '')
+            a = a.replace('~', '')
+
+            # 修改一些排版中常见的符号错误
+            a = a.replace('。。', '。')
+            a = a.replace('。。。', '……')
+            a = a.replace('—', "——")
+            a = a.replace('一一', "——")
+            # Black Circle, Katakana Middle Dot, Bullet, Bullet Operator 替换为标准中间点(U+00B7 MIDDLE DOT)
+            a = a.replace('●', "·")
+            a = a.replace('・', "·")
+            a = a.replace('•', "·")
+            a = a.replace('∙', "·")
+            # U+2027 HYPHENATION POINT 替换为中间点(U+00B7 MIDDLE DOT)
+            a = a.replace('‧', "·")
+            # 加重符号、乘号、点号替换为中间点(U+00B7 MIDDLE DOT)【如果使用乘号,应使用叉号乘,慎用点乘】
+            a = a.replace('•', "·")
+            a = a.replace('·', "·")
+            a = a.replace('▪', "·")
+            # Phoenician Word Separator (U+1091F) to middle dot
+            a = a.replace('𐤟', "·")
+            for i in range(10):
+                a = a.replace('————————', "——")
+                a = a.replace('——————', "——")
+                a = a.replace('————', "——")
+
+            # 将中文和数字混排中的全角数字转为半角数字,不改变标点的全半角情况
+            def is_Qnumber(uchar):
+                """判断一个unicode是否是全角数字"""
+                if uchar >= u'\uff10' and uchar <= u'\uff19':
+                    return True
+                else:
+                    return False
+
+            def Q2B(uchar):
+                """单个字符 全角转半角"""
+                inside_code = ord(uchar)
+                if inside_code == 0x3000:
+                    inside_code = 0x0020
+                else:
+                    inside_code -= 0xfee0
+                if inside_code < 0x0020 or inside_code > 0x7e:  # 转完之后不是半角字符返回原来的字符
+                    return uchar
+                return chr(inside_code)
+
+            def stringpartQ2B(ustring):
+                """把字符串中数字全角转半角"""
+                return "".join(
+                    [Q2B(uchar) if is_Qnumber(uchar) else uchar for uchar in ustring])
+
+            a = stringpartQ2B(a)
+
+            # 给中文和数字的混排增加空格
+            def find_this(q, i):
+                result = q[i]
+                return result
+
+            def find_next(q, i):
+                result = q[i + 1]
+                return result
+
+            i = 0
+            while i >= 0 and i < len(a) - 1:
+                if is_contain_chinese(str(find_this(a, i))) and is_contain_num(str(find_next(a, i))):  # 从中文转数字
+                    a = list(a)
+                    a.insert(i + 1, ' ')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(a, i))) and is_contain_num(str(find_this(a, i))):  # 从数字转中文
+                    a = list(a)
+                    a.insert(i + 1, ' ')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 将常用英文标点转换为中文标点
+            def E_trans_to_C(string):
+                E_pun = u',.;:!?()<>'
+                C_pun = u',。;:!?()《》'
+                table = {ord(f): ord(t) for f, t in zip(E_pun, C_pun)}
+                return string.translate(table)
+
+            a = E_trans_to_C(str(a))
+
+            # 对特殊数字符号进行处理
+            i = 0
+            while i <= len(a) - 1:
+                if a[i] == '¥' and not is_contain_symbol(str(a[i - 1])):
+                    a = list(a)
+                    a.insert(i, ' ')
+                    a = ''.join(a)
+                    i = i + 2
+                    continue
+                if a[i] == '$' and not is_contain_symbol(str(a[i - 1])):
+                    a = list(a)
+                    a.insert(i, ' ')
+                    a = ''.join(a)
+                    i = i + 2
+                    continue
+                if a[i] == "%":
+                    if a[i - 1] == ' ':
+                        a = list(a)
+                        del a[i - 1]
+                        a = ''.join(a)
+                        i = i - 1
+                        continue
+                    else:
+                        a = list(a)
+                        a.insert(i + 1, ' ')
+                        a = ''.join(a)
+                        i = i + 2
+                        continue
+                if a[i] == "°":
+                    if a[i - 1] == ' ':
+                        a = list(a)
+                        del a[i - 1]
+                        a = ''.join(a)
+                        i = i - 1
+                        continue
+                    else:
+                        a = list(a)
+                        a.insert(i + 1, ' ')
+                        a = ''.join(a)
+                        i = i + 2
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            a = a.replace('  ', ' ')
+            return a
+
+        elif containenglish(str(a)) and not is_contain_chinese(str(a)):
+            # 【英(数)块】给英文和数字混排的情况增加空格
+            def find_this(q, i):
+                result = q[i]
+                return result
+
+            def find_next(q, i):
+                result = q[i + 1]
+                return result
+
+            i = 0
+            while i >= 0 and i < len(a) - 1:
+                if is_contain_num(str(find_this(a, i))) and containenglish(str(find_next(a, i))):  # 从数字转英文
+                    a = list(a)
+                    a.insert(i + 1, ' ')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next(a, i))) and containenglish(str(find_this(a, i))):  # 从英文转数字
+                    a = list(a)
+                    a.insert(i + 1, ' ')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 将全角英文字符和数字转为半角英文和半角数字
+            def is_Qnumber(uchar):
+                """判断一个unicode是否是全角数字"""
+                if uchar >= u'\uff10' and uchar <= u'\uff19':
+                    return True
+                else:
+                    return False
+
+            def is_Qalphabet(uchar):
+                """判断一个unicode是否是全角英文字母"""
+                if (uchar >= u'\uff21' and uchar <= u'\uff3a') or (uchar >= u'\uff41' and uchar <= u'\uff5a'):
+                    return True
+                else:
+                    return False
+
+            def Q2B(uchar):
+                """单个字符 全角转半角"""
+                inside_code = ord(uchar)
+                if inside_code == 0x3000:
+                    inside_code = 0x0020
+                else:
+                    inside_code -= 0xfee0
+                if inside_code < 0x0020 or inside_code > 0x7e:  # 转完之后不是半角字符返回原来的字符
+                    return uchar
+                return chr(inside_code)
+
+            def stringpartQ2B(ustring):
+                """把字符串中字母和数字全角转半角"""
+                return "".join(
+                    [Q2B(uchar) if is_Qnumber(uchar) or is_Qalphabet(uchar) else uchar for uchar in ustring])
+
+            a = stringpartQ2B(a)
+
+            # 将文段中的中文符号转换为英文符号
+            def C_trans_to_E(string):
+                E_pun = u',.;:!?[]()<>'
+                C_pun = u',。;:!?【】()《》'
+                table = {ord(f): ord(t) for f, t in zip(C_pun, E_pun)}
+                return string.translate(table)
+
+            a = C_trans_to_E(str(a))
+
+            # One Dot Leader (U+2024) to full stop (U+002E) (句号)
+            a = a.replace('․', ".")
+
+            # 清除英文标点符号前面的空格(,.;:?!)
+            a = list(a)
+            i = 0
+            while i >= 0 and i < len(a) - 1:
+                if a[i] == ',':
+                    if a[i - 1] == ' ':
+                        del a[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if a[i] == '.':
+                    if a[i - 1] == ' ':
+                        del a[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if a[i] == ';':
+                    if a[i - 1] == ' ':
+                        del a[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if a[i] == ':':
+                    if a[i - 1] == ' ':
+                        del a[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if a[i] == '?':
+                    if a[i - 1] == ' ':
+                        del a[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if a[i] == '!':
+                    if a[i - 1] == ' ':
+                        del a[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                else:
+                    i = i + 1
+                    continue
+            a = ''.join(a)
+
+            # 对全数字文段的货币符号、百分号和度数这三个符号进行专门处理
+            i = 0
+            while i <= len(a) - 1:
+                if a[i] == '¥' and not is_contain_symbol(str(a[i - 1])):
+                    a = list(a)
+                    a.insert(i, ' ')
+                    a = ''.join(a)
+                    i = i + 2
+                    continue
+                if a[i] == '$' and not is_contain_symbol(str(a[i - 1])):
+                    a = list(a)
+                    a.insert(i, ' ')
+                    a = ''.join(a)
+                    i = i + 2
+                    continue
+                if a[i] == "%":
+                    if a[i - 1] == ' ':
+                        a = list(a)
+                        del a[i - 1]
+                        a = ''.join(a)
+                        i = i - 1
+                        continue
+                    else:
+                        a = list(a)
+                        a.insert(i + 1, ' ')
+                        a = ''.join(a)
+                        i = i + 2
+                        continue
+                if a[i] == "°":
+                    if a[i - 1] == ' ':
+                        a = list(a)
+                        del a[i - 1]
+                        a = ''.join(a)
+                        i = i - 1
+                        continue
+                    else:
+                        a = list(a)
+                        a.insert(i + 1, ' ')
+                        a = ''.join(a)
+                        i = i + 2
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            a = a.replace('  ', ' ')
+            return a
+
+        elif containenglish(str(a)) and is_contain_chinese(str(a)) or \
+                containenglish(str(a)) and is_contain_chinese(str(a)) and is_contain_num(str(a)):
+            # 【中英(数)混排块】识别中英文字符,对英文字符保留空格,对中文字符去掉空格。标点默认使用原文标点,以中文为主(默认使用情况为在中文中引用英文)。
+            def find_this(q, i):
+                result = q[i]
+                return result
+
+            def find_pre(q, i):
+                result = q[i - 1]
+                return result
+
+            def find_next(q, i):
+                result = q[i + 1]
+                return result
+
+            def find_pre2(q, i):
+                result = q[i - 2]
+                return result
+
+            def find_next2(q, i):
+                result = q[i + 2]
+                return result
+
+            def find_next3(q, i):
+                result = q[i + 3]
+                return result
+
+            # 首先来一遍此一后一的精准筛查
+            i = 0
+            while i >= 0 and i < len(a) - 1:
+                if is_contain_chinese(str(find_this(a, i))) and containenglish(str(find_next(a, i))):  # 从中文转英文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_this(a, i))) and is_contain_num(str(find_next(a, i))):  # 从中文转数字
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(a, i))) and is_contain_num(str(find_this(a, i))):  # 从数字转中文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_this(a, i))) and containenglish(str(find_next(a, i))):  # 从数字转英文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next(a, i))) and containenglish(str(find_this(a, i))):  # 从英文转数字
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(a, i))) and containenglish(str(find_this(a, i))):  # 从英文转中文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 再进行前一后一的插入
+            i = 1
+            while i > 0 and i < len(a) - 1:
+                if is_contain_chinese(str(find_pre(a, i))) and containenglish(str(find_next(a, i))):  # 从中文转英文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_pre(a, i))) and is_contain_num(str(find_next(a, i))):  # 从中文转数字
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(a, i))) and is_contain_num(str(find_pre(a, i))):  # 从数字转中文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_pre(a, i))) and containenglish(str(find_next(a, i))):  # 从数字转英文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next(a, i))) and containenglish(str(find_pre(a, i))):  # 从英文转数字
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(a, i))) and containenglish(str(find_pre(a, i))):  # 从英文转中文
+                    a = list(a)
+                    a.insert(i + 1, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 进行前一后二的筛查
+            i = 1
+            while i > 0 and i < len(a) - 2:
+                if is_contain_chinese(str(find_pre(a, i))) and containenglish(str(find_next2(a, i))):  # 从中文转英文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_pre(a, i))) and is_contain_num(str(find_next2(a, i))):  # 从中文转数字
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next2(a, i))) and is_contain_num(str(find_pre(a, i))):  # 从数字转中文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_pre(a, i))) and containenglish(str(find_next2(a, i))):  # 从数字转英文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next2(a, i))) and containenglish(str(find_pre(a, i))):  # 从英文转数字
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next2(a, i))) and containenglish(str(find_pre(a, i))):  # 从英文转中文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 再进行前二后二的筛查
+            i = 1
+            while i > 0 and i < len(a) - 2:
+                if is_contain_chinese(str(find_pre2(a, i))) and containenglish(str(find_next2(a, i))):  # 从中文转英文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_pre2(a, i))) and is_contain_num(str(find_next2(a, i))):  # 从中文转数字
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next2(a, i))) and is_contain_num(str(find_pre2(a, i))):  # 从数字转中文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_pre2(a, i))) and containenglish(str(find_next2(a, i))):  # 从数字转英文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next2(a, i))) and containenglish(str(find_pre2(a, i))):  # 从英文转数字
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next2(a, i))) and containenglish(str(find_pre2(a, i))):  # 从英文转中文
+                    a = list(a)
+                    a.insert(i + 2, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 最后进行一次前二后三的检查,这个比较少见,只在「武力⋯⋯”(1974」这个情况中存在
+            i = 1
+            while i > 0 and i < len(a) - 3:
+                if is_contain_chinese(str(find_pre2(a, i))) and containenglish(str(find_next3(a, i))):  # 从中文转英文
+                    a = list(a)
+                    a.insert(i + 3, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_pre2(a, i))) and is_contain_num(str(find_next3(a, i))):  # 从中文转数字
+                    a = list(a)
+                    a.insert(i + 3, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next3(a, i))) and is_contain_num(str(find_pre2(a, i))):  # 从数字转中文
+                    a = list(a)
+                    a.insert(i + 3, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_pre2(a, i))) and containenglish(str(find_next3(a, i))):  # 从数字转英文
+                    a = list(a)
+                    a.insert(i + 3, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next3(a, i))) and containenglish(str(find_pre2(a, i))):  # 从英文转数字
+                    a = list(a)
+                    a.insert(i + 3, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next3(a, i))) and containenglish(str(find_pre2(a, i))):  # 从英文转中文
+                    a = list(a)
+                    a.insert(i + 3, '*')
+                    a = ''.join(a)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 将多个*号替换成一个*。
+            a = a.replace('*****', "*")
+            a = a.replace('****', "*")
+            a = a.replace('***', "*")
+            a = a.replace("**", "*")
+
+            # 转换为三个列表(考虑在每个星号之后打上顺序,这样成为了列表后每个元素有一个代码i☆
+            b = a.split('*')
+            i = 0
+            while i >= 0 and i <= len(b) - 1:
+                b[i] = str(i + 1), '☆', b[i], '*'
+                b[i] = ''.join(b[i])
+                i = i + 1
+                continue
+
+            b_ch = []  # 中文(待清理)
+            for i in range(len(b)):
+                b_ch.append(b[i])
+            c_en = []  # 英文(待清理)
+            for i in range(len(b)):
+                c_en.append(b[i])
+            d_nu = []  # 数字(待清理)
+            for i in range(len(b)):
+                d_nu.append(b[i])
+
+            # 读取列表元素中☆之后的元素,定义一个函数
+            def qingli(k, i):
+                x = k[i]
+                z = x.index("☆") + 1
+                y = x[z: len(x)]
+                return y
+
+            # 执行清理
+            n = 0
+            while n <= len(b_ch) - 1:
+                if containenglish(str(qingli(b_ch, n))) or is_contain_num(str(qingli(b_ch, n))):
+                    del b_ch[n]  # 中文,除掉英文和数字
+                    n = n
+                    continue
+                else:
+                    n = n + 1
+                    continue
+
+            n = 0
+            while n <= len(c_en) - 1:
+                if is_contain_chinese(str(qingli(c_en, n))) or is_contain_num(str(qingli(c_en, n))):
+                    del c_en[n]  # 英文,除掉中文和数字
+                    n = n
+                    continue
+                else:
+                    n = n + 1
+                    continue
+
+            n = 0
+            while n <= len(d_nu) - 1:
+                if is_contain_chinese(str(qingli(d_nu, n))) or containenglish(str(qingli(d_nu, n))):
+                    del d_nu[n]  # 数字,除掉中文和英文
+                    n = n
+                    continue
+                else:
+                    n = n + 1
+                    continue
+
+            # 【对中文处理】
+            zh = ''.join(b_ch)
+            # 去除不必要的中英文符号及空格
+            zh = zh.replace(' ', '')
+            zh = zh.replace('#', '')
+            zh = zh.replace('^', '')
+            zh = zh.replace('~', '')
+            zh = zh.replace('~', '')
+
+            # 修改一些排版中常见的符号错误
+            zh = zh.replace('。。', '。')
+            zh = zh.replace('。。。', '……')
+            zh = zh.replace('—', "——")
+            zh = zh.replace('一一', "——")
+            # Black Circle, Katakana Middle Dot, Bullet, Bullet Operator 替换为标准中间点(U+00B7 MIDDLE DOT)
+            zh = zh.replace('●', "·")
+            zh = zh.replace('・', "·")
+            zh = zh.replace('•', "·")
+            zh = zh.replace('∙', "·")
+            # U+2027 HYPHENATION POINT 替换为中间点(U+00B7 MIDDLE DOT)
+            zh = zh.replace('‧', "·")
+            # 加重符号、乘号、点号替换为中间点(U+00B7 MIDDLE DOT)
+            zh = zh.replace('•', "·")
+            zh = zh.replace('·', "·")
+            zh = zh.replace('▪', "·")
+            # Phoenician Word Separator (U+1091F) to middle dot
+            zh = zh.replace('𐤟', "·")
+            for i in range(10):
+                zh = zh.replace('————————', "——")
+                zh = zh.replace('——————', "——")
+                zh = zh.replace('————', "——")
+
+            # 将常用英文标点转换为中文标点
+            def E_trans_to_C(string):
+                E_pun = u',.;:!?()<>'
+                C_pun = u',。;:!?()《》'
+                table = {ord(f): ord(t) for f, t in zip(E_pun, C_pun)}
+                return string.translate(table)
+
+            zh = E_trans_to_C(str(zh))
+
+            # 合成待整合的中文列表
+            zh_he = zh.split('*')
+
+            def Q2B(uchar):
+                """单个字符 全角转半角"""
+                inside_code = ord(uchar)
+                if inside_code == 0x3000:
+                    inside_code = 0x0020
+                else:
+                    inside_code -= 0xfee0
+                if inside_code < 0x0020 or inside_code > 0x7e:  # 转完之后不是半角字符返回原来的字符
+                    return uchar
+                return chr(inside_code)
+
+            # 【对英文处理】将全角英文字母转为半角英文字母,不改变符号的全半角,标点符号(,.;:?!)前面去空格。
+            en = ''.join(c_en)
+
+            def is_Qalphabet(uchar):
+                """判断一个unicode是否是全角英文字母"""
+                if (uchar >= u'\uff21' and uchar <= u'\uff3a') or (uchar >= u'\uff41' and uchar <= u'\uff5a'):
+                    return True
+                else:
+                    return False
+
+            def stringpartQ2B(ustring):
+                """把字符串中字母全角转半角"""
+                return "".join([Q2B(uchar) if is_Qalphabet(uchar) else uchar for uchar in ustring])
+
+            en = stringpartQ2B(en)
+
+            # One Dot Leader (U+2024) to full stop (U+002E) (句号)
+            en = en.replace('․', ".")
+
+            # 去除标点符号前面的空格
+            en = list(en)
+            i = 0
+            while i >= 0 and i < len(en) - 1:
+                if en[i] == ',':
+                    if en[i - 1] == ' ':
+                        del en[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if en[i] == '.':
+                    if en[i - 1] == ' ':
+                        del en[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if en[i] == ';':
+                    if en[i - 1] == ' ':
+                        del en[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if en[i] == ':':
+                    if en[i - 1] == ' ':
+                        del en[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if en[i] == '?':
+                    if en[i - 1] == ' ':
+                        del en[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if en[i] == '!':
+                    if en[i - 1] == ' ':
+                        del en[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                else:
+                    i = i + 1
+                    continue
+            en = ''.join(en)
+
+            en_he = en.split('*')
+
+            # 【对数字处理】将全角数字转为半角数字,不改变符号的全半角
+            shu = ''.join(d_nu)
+
+            def is_Qnumber(uchar):
+                """判断一个unicode是否是全角数字"""
+                if uchar >= u'\uff10' and uchar <= u'\uff19':
+                    return True
+                else:
+                    return False
+
+            def stringpartQ2B(ustring):
+                """把字符串中数字全角转半角"""
+                return "".join(
+                    [Q2B(uchar) if is_Qnumber(uchar) else uchar for uchar in ustring])
+
+            shu = stringpartQ2B(shu)
+
+            shu_he = shu.split('*')
+
+            # 合在一起(存在大于10的数变成小于2的问题,后面解决)
+            he = zh_he + en_he + shu_he
+
+            # 清掉空以及前面的顺序符号
+            n = 0
+            while n >= 0 and n <= len(he) - 1:
+                if he[n] == '':
+                    he.remove('')
+                    continue
+                else:
+                    n = n + 1
+                    continue
+
+            he.sort(key=lambda x: int(x.split('☆')[0]))
+
+            m = 0
+            while m >= 0 and m <= len(he) - 1:
+                f = he[m]
+                g = f.index('☆') + 1
+                h = f[g: len(f)]
+                he[m] = h
+                m = m + 1
+
+            # 将列表转化为字符串相连,这里本可以转化成空格,但是这样会因为分割点问题产生问题,故先整体以"空"合并
+            zhong = ''.join(he)
+
+            # 解决因为分块不当带来的括号问题(当括号分到英文块的时候没有被处理到),此处默认全部换成中文括号
+            zhong = zhong.replace('(', '(')
+            zhong = zhong.replace(')', ')')
+            #zhong = zhong.replace('[', '【')
+            #zhong = zhong.replace(']', '】')
+            zhong = zhong.replace('<', '《')
+            zhong = zhong.replace('>', '》')
+
+            # 清除因为分块不当带来的括号、引号、顿号前后的空格
+            zhong = list(zhong)
+            i = 0
+            while i >= 0 and i < len(zhong) - 1:
+                if zhong[i] == '(':
+                    if zhong[i - 1] == ' ':
+                        del zhong[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == ')':
+                    if zhong[i - 1] == ' ':
+                        del zhong[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == '、':
+                    if zhong[i - 1] == ' ':
+                        del zhong[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == '“':
+                    if zhong[i - 1] == ' ':
+                        del zhong[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == '”':
+                    if zhong[i - 1] == ' ':
+                        del zhong[i - 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            i = 0
+            while i >= 0 and i < len(zhong) - 1:
+                if zhong[i] == '(':
+                    if zhong[i + 1] == ' ':
+                        del zhong[i + 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == ')':
+                    if zhong[i + 1] == ' ':
+                        del zhong[i + 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == '、':
+                    if zhong[i + 1] == ' ':
+                        del zhong[i + 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == '“':
+                    if zhong[i + 1] == ' ':
+                        del zhong[i + 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                if zhong[i] == '”':
+                    if zhong[i + 1] == ' ':
+                        del zhong[i + 1]
+                        continue
+                    else:
+                        i = i + 1
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            zhong = ''.join(zhong)
+
+            # 给中英数三者相邻的文本插入空格,给特定的单位符号前后增减空格(注意,如果是探索,不能等号,如果是全局修改,必须<=)
+            i = 0
+            while i <= len(zhong) - 1:
+                if zhong[i] == '¥' and not is_contain_symbol(str(zhong[i - 1])):
+                    zhong = list(zhong)
+                    zhong.insert(i, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 2
+                    continue
+                if zhong[i] == '$' and not is_contain_symbol(str(zhong[i - 1])):
+                    zhong = list(zhong)
+                    zhong.insert(i, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 2
+                    continue
+                if zhong[i] == "%":
+                    if zhong[i - 1] == ' ':
+                        zhong = list(zhong)
+                        del zhong[i - 1]
+                        zhong = ''.join(zhong)
+                        i = i - 1
+                        continue
+                    else:
+                        zhong = list(zhong)
+                        zhong.insert(i + 1, ' ')
+                        zhong = ''.join(zhong)
+                        i = i + 2
+                        continue
+                if zhong[i] == "°":
+                    if zhong[i - 1] == ' ':
+                        zhong = list(zhong)
+                        del zhong[i - 1]
+                        zhong = ''.join(zhong)
+                        i = i - 1
+                        continue
+                    else:
+                        zhong = list(zhong)
+                        zhong.insert(i + 1, ' ')
+                        zhong = ''.join(zhong)
+                        i = i + 2
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            i = 0
+            while i >= 0 and i < len(zhong) - 1:
+                if is_contain_chinese(str(find_this(zhong, i))) and containenglish(str(find_next(zhong, i))):  # 从中文转英文
+                    zhong = list(zhong)
+                    zhong.insert(i + 1, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_this(zhong, i))) and is_contain_num(str(find_next(zhong, i))):  # 从中文转数字
+                    zhong = list(zhong)
+                    zhong.insert(i + 1, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(zhong, i))) and is_contain_num(str(find_this(zhong, i))):  # 从数字转中文
+                    zhong = list(zhong)
+                    zhong.insert(i + 1, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_this(zhong, i))) and containenglish(str(find_next(zhong, i))):  # 从数字转英文
+                    zhong = list(zhong)
+                    zhong.insert(i + 1, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next(zhong, i))) and containenglish(str(find_this(zhong, i))):  # 从英文转数字
+                    zhong = list(zhong)
+                    zhong.insert(i + 1, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(zhong, i))) and containenglish(str(find_this(zhong, i))):  # 从英文转中文
+                    zhong = list(zhong)
+                    zhong.insert(i + 1, ' ')
+                    zhong = ''.join(zhong)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 清除连续空格
+            zhong = zhong.replace('  ', ' ')
+            return zhong
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def keyPressEvent(self, e):  # 当页面显示的时候,按下esc键可关闭窗口
+        if e.key() == Qt.Key.Key_Escape.value:
+            self.close()
+
+    def activate(self):  # 设置窗口显示
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+        WINDOW_WEIGHT = int(self.width())
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        win_old_width = codecs.open('win_width.txt', 'r', encoding='utf-8').read()
+        self.tab_bar.setVisible(True)
+        self.resize(int(win_old_width), DE_HEIGHT)
+        self.show()
+        if self.pos().x() + WINDOW_WEIGHT >= SCREEN_WEIGHT:
+            self.move_window(SCREEN_WEIGHT - int(win_old_width) - 3, self.pos().y())
+        btna4.setChecked(True)
+        self.btn_00.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #0085FF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #FFFFFF''')
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
\ No newline at end of file
diff --git a/.store/part13.py b/.store/part13.py
new file mode 100644
index 0000000..a359576
--- /dev/null
+++ b/.store/part13.py
@@ -0,0 +1,707 @@
+class window4(QWidget):  # Customization settings
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):  # 设置窗口内布局
+        self.setUpMainWindow()
+        self.resize(839, 475)
+        self.center()
+        self.setWindowTitle('Customization settings')
+        self.setFocus()
+        # self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def setUpMainWindow(self):
+        wid0 = QWidget()
+        lbl0 = QLabel("Set your path", self)
+        font = PyQt6.QtGui.QFont()
+        font.setBold(True)
+        lbl0.setFont(font)
+        b40 = QHBoxLayout()
+        b40.setContentsMargins(10, 10, 10, 10)
+        b40.addStretch()
+        b40.addWidget(lbl0)
+        b40.addStretch()
+        wid0.setLayout(b40)
+
+        wid0_5 = QWidget()
+        btn_oneclickmake = QPushButton('Automatically create my path with one click!', self)
+        btn_oneclickmake.setMaximumHeight(20)
+        btn_oneclickmake.setFixedWidth(360)
+        btn_oneclickmake.clicked.connect(self.oneclickmake)
+        font = PyQt6.QtGui.QFont()
+        font.setBold(True)
+        #btn_oneclickmake.setFont(font)
+        b0_5 = QHBoxLayout()
+        b0_5.setContentsMargins(10, 10, 10, 10)
+        b0_5.addStretch()
+        b0_5.addWidget(btn_oneclickmake)
+        b0_5.addStretch()
+        wid0_5.setLayout(b0_5)
+
+        wid1 = QWidget()
+        lbl4_1 = QLabel('Articles:', self)
+        btn4_1 = QPushButton('Open', self)
+        btn4_1.setMaximumHeight(20)
+        btn4_1.setMinimumWidth(80)
+        btn4_1.clicked.connect(self.locatefile1)
+        self.lbl4_11 = QLabel(self)
+        b41 = QHBoxLayout()
+        b41.setContentsMargins(0, 0, 0, 0)
+        b41.addWidget(btn4_1)
+        b41.addWidget(lbl4_1)
+        b41.addWidget(self.lbl4_11)
+        b41.addStretch()
+        wid1.setLayout(b41)
+
+        wid2 = QWidget()
+        lbl4_2 = QLabel('Authors:', self)
+        btn4_2 = QPushButton('Open', self)
+        btn4_2.setMaximumHeight(20)
+        btn4_2.setMinimumWidth(80)
+        btn4_2.clicked.connect(self.locatefile2)
+        self.lbl4_21 = QLabel(self)
+        b42 = QHBoxLayout()
+        b42.setContentsMargins(0, 0, 0, 0)
+        b42.addWidget(btn4_2)
+        b42.addWidget(lbl4_2)
+        b42.addWidget(self.lbl4_21)
+        b42.addStretch()
+        wid2.setLayout(b42)
+
+        wid3 = QWidget()
+        lbl4_3 = QLabel('Institutes:', self)
+        btn4_3 = QPushButton('Open', self)
+        btn4_3.setMaximumHeight(20)
+        btn4_3.setMinimumWidth(80)
+        btn4_3.clicked.connect(self.locatefile3)
+        self.lbl4_31 = QLabel(self)
+        b43 = QHBoxLayout()
+        b43.setContentsMargins(0, 0, 0, 0)
+        b43.addWidget(btn4_3)
+        b43.addWidget(lbl4_3)
+        b43.addWidget(self.lbl4_31)
+        b43.addStretch()
+        wid3.setLayout(b43)
+
+        wid4 = QWidget()
+        lbl4_4 = QLabel('Publications:', self)
+        btn4_4 = QPushButton('Open', self)
+        btn4_4.setMaximumHeight(20)
+        btn4_4.setMinimumWidth(80)
+        btn4_4.clicked.connect(self.locatefile4)
+        self.lbl4_41 = QLabel(self)
+        b44 = QHBoxLayout()
+        b44.setContentsMargins(0, 0, 0, 0)
+        b44.addWidget(btn4_4)
+        b44.addWidget(lbl4_4)
+        b44.addWidget(self.lbl4_41)
+        b44.addStretch()
+        wid4.setLayout(b44)
+
+        wid5 = QWidget()
+        lbl4_5 = QLabel('Problems:', self)
+        btn4_5 = QPushButton('Open', self)
+        btn4_5.setMaximumHeight(20)
+        btn4_5.setMinimumWidth(80)
+        btn4_5.clicked.connect(self.locatefile5)
+        self.lbl4_51 = QLabel(self)
+        b45 = QHBoxLayout()
+        b45.setContentsMargins(0, 0, 0, 0)
+        b45.addWidget(btn4_5)
+        b45.addWidget(lbl4_5)
+        b45.addWidget(self.lbl4_51)
+        b45.addStretch()
+        wid5.setLayout(b45)
+
+        wid6 = QWidget()
+        lbl4_6 = QLabel('Concepts:', self)
+        btn4_6 = QPushButton('Open', self)
+        btn4_6.setMaximumHeight(20)
+        btn4_6.setMinimumWidth(80)
+        btn4_6.clicked.connect(self.locatefile6)
+        self.lbl4_61 = QLabel(self)
+        b46 = QHBoxLayout()
+        b46.setContentsMargins(0, 0, 0, 0)
+        b46.addWidget(btn4_6)
+        b46.addWidget(lbl4_6)
+        b46.addWidget(self.lbl4_61)
+        b46.addStretch()
+        wid6.setLayout(b46)
+
+        wid7 = QWidget()
+        lbl4_7 = QLabel('Theories:', self)
+        btn4_7 = QPushButton('Open', self)
+        btn4_7.setMaximumHeight(20)
+        btn4_7.setMinimumWidth(80)
+        btn4_7.clicked.connect(self.locatefile7)
+        self.lbl4_71 = QLabel(self)
+        b47 = QHBoxLayout()
+        b47.setContentsMargins(0, 0, 0, 0)
+        b47.addWidget(btn4_7)
+        b47.addWidget(lbl4_7)
+        b47.addWidget(self.lbl4_71)
+        b47.addStretch()
+        wid7.setLayout(b47)
+
+        wid8 = QWidget()
+        lbl4_8 = QLabel('Methods:', self)
+        btn4_8 = QPushButton('Open', self)
+        btn4_8.setMaximumHeight(20)
+        btn4_8.setMinimumWidth(80)
+        btn4_8.clicked.connect(self.locatefile8)
+        self.lbl4_81 = QLabel(self)
+        b48 = QHBoxLayout()
+        b48.setContentsMargins(0, 0, 0, 0)
+        b48.addWidget(btn4_8)
+        b48.addWidget(lbl4_8)
+        b48.addWidget(self.lbl4_81)
+        b48.addStretch()
+        wid8.setLayout(b48)
+
+        wid9 = QWidget()
+        lbl4_9 = QLabel('Books:', self)
+        btn4_9 = QPushButton('Open', self)
+        btn4_9.setMaximumHeight(20)
+        btn4_9.setMinimumWidth(80)
+        btn4_9.clicked.connect(self.locatefile9)
+        self.lbl4_91 = QLabel(self)
+        b49 = QHBoxLayout()
+        b49.setContentsMargins(0, 0, 0, 0)
+        b49.addWidget(btn4_9)
+        b49.addWidget(lbl4_9)
+        b49.addWidget(self.lbl4_91)
+        b49.addStretch()
+        wid9.setLayout(b49)
+
+        wid10 = QWidget()
+        lbl4_10 = QLabel('My Scripts:', self)
+        btn4_10 = QPushButton('Open', self)
+        btn4_10.setMaximumHeight(20)
+        btn4_10.setMinimumWidth(80)
+        btn4_10.clicked.connect(self.locatefile10)
+        self.lbl4_101 = QLabel(self)
+        b410 = QHBoxLayout()
+        b410.setContentsMargins(0, 0, 0, 0)
+        b410.addWidget(btn4_10)
+        b410.addWidget(lbl4_10)
+        b410.addWidget(self.lbl4_101)
+        b410.addStretch()
+        wid10.setLayout(b410)
+
+        wid11 = QWidget()
+        btn4_11 = QPushButton('Save settings and start collecting!', self)
+        btn4_11.clicked.connect(self.fullsave)
+        btn4_11.setMaximumHeight(20)
+        btn4_11.setFixedWidth(360)
+        font = PyQt6.QtGui.QFont()
+        font.setBold(True)
+        btn4_11.setFont(font)
+        b411 = QHBoxLayout()
+        b411.setContentsMargins(10, 10, 10, 10)
+        b411.addStretch()
+        b411.addWidget(btn4_11)
+        b411.addStretch()
+        wid11.setLayout(b411)
+
+        main_h_box = QVBoxLayout()
+        main_h_box.addWidget(wid0)
+        main_h_box.addWidget(wid0_5)
+        main_h_box.addWidget(wid5)
+        main_h_box.addWidget(wid6)
+        main_h_box.addWidget(wid7)
+        main_h_box.addWidget(wid8)
+        main_h_box.addWidget(wid2)
+        main_h_box.addWidget(wid3)
+        main_h_box.addWidget(wid4)
+        main_h_box.addWidget(wid1)
+        main_h_box.addWidget(wid9)
+        main_h_box.addWidget(wid10)
+        main_h_box.addStretch()
+        main_h_box.addWidget(wid11)
+        main_h_box.addStretch()
+        self.setLayout(main_h_box)
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def keyPressEvent(self, e):  # 当页面显示的时候,按下esc键可关闭窗口
+        if e.key() == Qt.Key.Key_Escape.value:
+            self.close()
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
+
+    def activate(self):  # 设置窗口显示
+        self.show()
+        home_dir = str(Path.home())
+        tarname1 = "StrawberryAppPath"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.mkdir(fulldir1)
+        tarname2 = "DoNotDelete.txt"
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        if not os.path.exists(fulldir2):
+            with open(fulldir2, 'a', encoding='utf-8') as f0:
+                f0.write('')
+        dnd = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+        if dnd != '':
+            dnd = dnd.rstrip('\n')
+            dndl = dnd.split('\n')
+            if len(dndl) == 10:
+                with open('path_art.txt', 'w', encoding='utf-8') as f1:
+                    f1.write(dndl[0])
+                with open('path_aut.txt', 'w', encoding='utf-8') as f2:
+                    f2.write(dndl[1])
+                with open('path_ins.txt', 'w', encoding='utf-8') as f3:
+                    f3.write(dndl[2])
+                with open('path_pub.txt', 'w', encoding='utf-8') as f4:
+                    f4.write(dndl[3])
+                with open('path_pro.txt', 'w', encoding='utf-8') as f5:
+                    f5.write(dndl[4])
+                with open('path_con.txt', 'w', encoding='utf-8') as f6:
+                    f6.write(dndl[5])
+                with open('path_the.txt', 'w', encoding='utf-8') as f7:
+                    f7.write(dndl[6])
+                with open('path_met.txt', 'w', encoding='utf-8') as f8:
+                    f8.write(dndl[7])
+                with open('path_boo.txt', 'w', encoding='utf-8') as f9:
+                    f9.write(dndl[8])
+                with open('path_scr.txt', 'w', encoding='utf-8') as f10:
+                    f10.write(dndl[9])
+
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 == '':
+            self.lbl4_11.setText('The directory is empty. Please check!')
+            self.lbl4_11.setStyleSheet('color:red')
+        else:
+            self.lbl4_11.setText(path1)
+            self.lbl4_11.setStyleSheet('color:black')
+
+        path2 = codecs.open('path_aut.txt', 'r', encoding='utf-8').read()
+        if path2 == '':
+            self.lbl4_21.setText('The directory is empty. Please check!')
+            self.lbl4_21.setStyleSheet('color:red')
+        else:
+            self.lbl4_21.setText(path2)
+            self.lbl4_21.setStyleSheet('color:black')
+
+        path3 = codecs.open('path_ins.txt', 'r', encoding='utf-8').read()
+        if path3 == '':
+            self.lbl4_31.setText('The directory is empty. Please check!')
+            self.lbl4_31.setStyleSheet('color:red')
+        else:
+            self.lbl4_31.setText(path3)
+            self.lbl4_31.setStyleSheet('color:black')
+
+        path4 = codecs.open('path_pub.txt', 'r', encoding='utf-8').read()
+        if path4 == '':
+            self.lbl4_41.setText('The directory is empty. Please check!')
+            self.lbl4_41.setStyleSheet('color:red')
+        else:
+            self.lbl4_41.setText(path4)
+            self.lbl4_41.setStyleSheet('color:black')
+
+        path5 = codecs.open('path_pro.txt', 'r', encoding='utf-8').read()
+        if path5 == '':
+            self.lbl4_51.setText('The directory is empty. Please check!')
+            self.lbl4_51.setStyleSheet('color:red')
+        else:
+            self.lbl4_51.setText(path5)
+            self.lbl4_51.setStyleSheet('color:black')
+
+        path6 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+        if path6 == '':
+            self.lbl4_61.setText('The directory is empty. Please check!')
+            self.lbl4_61.setStyleSheet('color:red')
+        else:
+            self.lbl4_61.setText(path6)
+            self.lbl4_61.setStyleSheet('color:black')
+
+        path7 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+        if path7 == '':
+            self.lbl4_71.setText('The directory is empty. Please check!')
+            self.lbl4_71.setStyleSheet('color:red')
+        else:
+            self.lbl4_71.setText(path7)
+            self.lbl4_71.setStyleSheet('color:black')
+
+        path8 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+        if path8 == '':
+            self.lbl4_81.setText('The directory is empty. Please check!')
+            self.lbl4_81.setStyleSheet('color:red')
+        else:
+            self.lbl4_81.setText(path8)
+            self.lbl4_81.setStyleSheet('color:black')
+
+        path9 = codecs.open('path_boo.txt', 'r', encoding='utf-8').read()
+        if path9 == '':
+            self.lbl4_91.setText('The directory is empty. Please check!')
+            self.lbl4_91.setStyleSheet('color:red')
+        else:
+            self.lbl4_91.setText(path9)
+            self.lbl4_91.setStyleSheet('color:black')
+
+        path10 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if path10 == '':
+            self.lbl4_101.setText('The directory is empty. Please check!')
+            self.lbl4_101.setStyleSheet('color:red')
+        else:
+            self.lbl4_101.setText(path10)
+            self.lbl4_101.setStyleSheet('color:black')
+
+    def fullsave(self):
+        home_dir = str(Path.home())
+        tarname1 = "StrawberryAppPath"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.mkdir(fulldir1)
+        tarname2 = "DoNotDelete.txt"
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        part1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read() + '\n'
+        part2 = codecs.open('path_aut.txt', 'r', encoding='utf-8').read() + '\n'
+        part3 = codecs.open('path_ins.txt', 'r', encoding='utf-8').read() + '\n'
+        part4 = codecs.open('path_pub.txt', 'r', encoding='utf-8').read() + '\n'
+        part5 = codecs.open('path_pro.txt', 'r', encoding='utf-8').read() + '\n'
+        part6 = codecs.open('path_con.txt', 'r', encoding='utf-8').read() + '\n'
+        part7 = codecs.open('path_the.txt', 'r', encoding='utf-8').read() + '\n'
+        part8 = codecs.open('path_met.txt', 'r', encoding='utf-8').read() + '\n'
+        part9 = codecs.open('path_boo.txt', 'r', encoding='utf-8').read() + '\n'
+        part10 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read() + '\n'
+        with open(fulldir2, 'w', encoding='utf-8') as f0:
+            f0.write(part1 + part2 + part3 + part4 + part5 + part6 + part7 +
+                     part8 + part9 + part10)
+        path10 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if path10 != '':
+            tarname_cls = "elegantpaper.cls"
+            fulldir_cls = os.path.join(path10, tarname_cls)
+            contend_cls = codecs.open('elegantpaper.cls', 'r', encoding='utf-8').read()
+            with open(fulldir_cls, 'w', encoding='utf-8') as f8:
+                f8.write(contend_cls)
+            tarname_bib = 'reference.bib'
+            fulldir_bib = os.path.join(path10, tarname_bib)
+            with open(fulldir_bib, 'w', encoding='utf-8') as f8:
+                f8.write('')
+            tarname_not = "elegantnote.cls"
+            fulldir_not = os.path.join(path10, tarname_not)
+            contend_not = codecs.open('elegantnote.cls', 'r', encoding='utf-8').read()
+            with open(fulldir_not, 'w', encoding='utf-8') as f8:
+                f8.write(contend_not)
+            tarname_iee = "IEEEtran.cls"
+            fulldir_iee = os.path.join(path10, tarname_iee)
+            contend_iee = codecs.open('IEEEtran.cls', 'r', encoding='utf-8').read()
+            with open(fulldir_iee, 'w', encoding='utf-8') as f8:
+                f8.write(contend_iee)
+            tarname_jor1 = "journalCNdef.tex"
+            fulldir_jor1 = os.path.join(path10, tarname_jor1)
+            contend_jor1 = codecs.open('journalCNdef.tex', 'r', encoding='utf-8').read()
+            with open(fulldir_jor1, 'w', encoding='utf-8') as f8:
+                f8.write(contend_jor1)
+            tarname_jor2 = "journalCNdef2.tex"
+            fulldir_jor2 = os.path.join(path10, tarname_jor2)
+            contend_jor2 = codecs.open('journalCNdef2.tex', 'r', encoding='utf-8').read()
+            with open(fulldir_jor2, 'w', encoding='utf-8') as f8:
+                f8.write(contend_jor2)
+            tarname_jor3 = "journalCNpicins.sty"
+            fulldir_jor3 = os.path.join(path10, tarname_jor3)
+            contend_jor3 = codecs.open('journalCNpicins.sty', 'r', encoding='utf-8').read()
+            with open(fulldir_jor3, 'w', encoding='utf-8') as f8:
+                f8.write(contend_jor3)
+            tarname_bea = "BeamerCN.sty"
+            fulldir_bea = os.path.join(path10, tarname_bea)
+            contend_bea = codecs.open('BeamerCN.sty', 'r', encoding='utf-8').read()
+            with open(fulldir_bea, 'w', encoding='utf-8') as f8:
+                f8.write(contend_bea)
+        self.close()
+
+    def oneclickmake(self):
+        home_dir = str(Path.home())
+        tarname1 = "Documents"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.makedirs(fulldir1)
+        tarname2 = 'Obsidien'
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        if not os.path.exists(fulldir2):
+            os.makedirs(fulldir2)
+        tarname3 = 'Database'
+        fulldir3 = os.path.join(fulldir2, tarname3)
+        if not os.path.exists(fulldir3):
+            os.makedirs(fulldir3)
+        tarnamea = 'Problems'
+        fulldira = os.path.join(fulldir3, tarnamea)
+        if not os.path.exists(fulldira):
+            os.makedirs(fulldira)
+        self.lbl4_51.setText(fulldira)
+        self.lbl4_51.setStyleSheet('color:black')
+        with open('path_pro.txt', 'w', encoding='utf-8') as f5:
+            f5.write(fulldira)
+        tarnameb = 'Concepts'
+        fulldirb = os.path.join(fulldir3, tarnameb)
+        if not os.path.exists(fulldirb):
+            os.makedirs(fulldirb)
+        self.lbl4_61.setText(fulldirb)
+        self.lbl4_61.setStyleSheet('color:black')
+        with open('path_con.txt', 'w', encoding='utf-8') as f6:
+            f6.write(fulldirb)
+        tarnamec = 'Theories'
+        fulldirc = os.path.join(fulldir3, tarnamec)
+        if not os.path.exists(fulldirc):
+            os.makedirs(fulldirc)
+        self.lbl4_71.setText(fulldirc)
+        self.lbl4_71.setStyleSheet('color:black')
+        with open('path_the.txt', 'w', encoding='utf-8') as f7:
+            f7.write(fulldirc)
+        tarnamed = 'Methods'
+        fulldird = os.path.join(fulldir3, tarnamed)
+        if not os.path.exists(fulldird):
+            os.makedirs(fulldird)
+        self.lbl4_81.setText(fulldird)
+        self.lbl4_81.setStyleSheet('color:black')
+        with open('path_met.txt', 'w', encoding='utf-8') as f8:
+            f8.write(fulldird)
+        tarnamee = 'Authors'
+        fulldire = os.path.join(fulldir3, tarnamee)
+        if not os.path.exists(fulldire):
+            os.makedirs(fulldire)
+        self.lbl4_21.setText(fulldire)
+        self.lbl4_21.setStyleSheet('color:black')
+        with open('path_aut.txt', 'w', encoding='utf-8') as f2:
+            f2.write(fulldire)
+        tarnamef = 'Institutes'
+        fulldirf = os.path.join(fulldir3, tarnamef)
+        if not os.path.exists(fulldirf):
+            os.makedirs(fulldirf)
+        self.lbl4_31.setText(fulldirf)
+        self.lbl4_31.setStyleSheet('color:black')
+        with open('path_ins.txt', 'w', encoding='utf-8') as f3:
+            f3.write(fulldirf)
+        tarnameg = 'Publications'
+        fulldirg = os.path.join(fulldir3, tarnameg)
+        if not os.path.exists(fulldirg):
+            os.makedirs(fulldirg)
+        self.lbl4_41.setText(fulldirg)
+        self.lbl4_41.setStyleSheet('color:black')
+        with open('path_pub.txt', 'w', encoding='utf-8') as f4:
+            f4.write(fulldirg)
+        tarnameh = 'Articles'
+        fulldirh = os.path.join(fulldir3, tarnameh)
+        if not os.path.exists(fulldirh):
+            os.makedirs(fulldirh)
+        self.lbl4_11.setText(fulldirh)
+        self.lbl4_11.setStyleSheet('color:black')
+        with open('path_art.txt', 'w', encoding='utf-8') as f1:
+            f1.write(fulldirh)
+        tarnamei = 'Books'
+        fulldiri = os.path.join(fulldir3, tarnamei)
+        if not os.path.exists(fulldiri):
+            os.makedirs(fulldiri)
+        self.lbl4_91.setText(fulldiri)
+        self.lbl4_91.setStyleSheet('color:black')
+        with open('path_boo.txt', 'w', encoding='utf-8') as f9:
+            f9.write(fulldiri)
+        tarnamej = 'My Scripts'
+        fulldirj = os.path.join(fulldir3, tarnamej)
+        if not os.path.exists(fulldirj):
+            os.makedirs(fulldirj)
+        self.lbl4_101.setText(fulldirj)
+        self.lbl4_101.setStyleSheet('color:black')
+        with open('path_scr.txt', 'w', encoding='utf-8') as f10:
+            f10.write(fulldirj)
+
+    def locatefile1(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_art.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_11.setText('The directory is empty. Please check!')
+            self.lbl4_11.setStyleSheet('color:red')
+        else:
+            self.lbl4_11.setText(path)
+            self.lbl4_11.setStyleSheet('color:black')
+
+    def locatefile2(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_aut.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_aut.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_21.setText('The directory is empty. Please check!')
+            self.lbl4_21.setStyleSheet('color:red')
+        else:
+            self.lbl4_21.setText(path)
+            self.lbl4_21.setStyleSheet('color:black')
+
+    def locatefile3(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_ins.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_ins.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_31.setText('The directory is empty. Please check!')
+            self.lbl4_31.setStyleSheet('color:red')
+        else:
+            self.lbl4_31.setText(path)
+            self.lbl4_31.setStyleSheet('color:black')
+
+    def locatefile4(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_pub.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_pub.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_41.setText('The directory is empty. Please check!')
+            self.lbl4_41.setStyleSheet('color:red')
+        else:
+            self.lbl4_41.setText(path)
+            self.lbl4_41.setStyleSheet('color:black')
+
+    def locatefile5(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_pro.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_pro.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_51.setText('The directory is empty. Please check!')
+            self.lbl4_51.setStyleSheet('color:red')
+        else:
+            self.lbl4_51.setText(path)
+            self.lbl4_51.setStyleSheet('color:black')
+
+    def locatefile6(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_con.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_61.setText('The directory is empty. Please check!')
+            self.lbl4_61.setStyleSheet('color:red')
+        else:
+            self.lbl4_61.setText(path)
+            self.lbl4_61.setStyleSheet('color:black')
+
+    def locatefile7(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_the.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_71.setText('The directory is empty. Please check!')
+            self.lbl4_71.setStyleSheet('color:red')
+        else:
+            self.lbl4_71.setText(path)
+            self.lbl4_71.setStyleSheet('color:black')
+
+    def locatefile8(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_met.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_81.setText('The directory is empty. Please check!')
+            self.lbl4_81.setStyleSheet('color:red')
+        else:
+            self.lbl4_81.setText(path)
+            self.lbl4_81.setStyleSheet('color:black')
+
+    def locatefile9(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_boo.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_boo.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_91.setText('The directory is empty. Please check!')
+            self.lbl4_91.setStyleSheet('color:red')
+        else:
+            self.lbl4_91.setText(path)
+            self.lbl4_91.setStyleSheet('color:black')
+
+    def locatefile10(self):
+        home_dir = str(Path.home())
+        fj = QFileDialog.getExistingDirectory(self, 'Open', home_dir)
+        pathfile = codecs.open('path_scr.txt', 'w', encoding='utf-8')
+        pathfile.write(fj)
+        pathfile.close()
+        path = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if path == '':
+            self.lbl4_101.setText('The directory is empty. Please check!')
+            self.lbl4_101.setStyleSheet('color:red')
+        else:
+            self.lbl4_101.setText(path)
+            self.lbl4_101.setStyleSheet('color:black')
+
+style_sheet_ori = '''
+    QTabWidget::pane {
+        border: 1px solid #ECECEC;
+        background: #ECECEC;
+        border-radius: 9px;
+}
+    QPushButton{
+        border: 1px outset grey;
+        background-color: #FFFFFF;
+        border-radius: 4px;
+        padding: 1px;
+        color: #000000
+}
+    QPushButton:pressed{
+        border: 1px outset grey;
+        background-color: #0085FF;
+        border-radius: 4px;
+        padding: 1px;
+        color: #FFFFFF
+}
+    QPlainTextEdit{
+        border: 1px solid grey;  
+        border-radius:4px;
+        padding: 1px 5px 1px 3px; 
+        background-clip: border;
+        background-color: #F3F2EE;
+        color: #000000;
+        font: 14pt Times New Roman;
+}
+    QPlainTextEdit#edit{
+        border: 1px solid grey;  
+        border-radius:4px;
+        padding: 1px 5px 1px 3px; 
+        background-clip: border;
+        background-color: #FFFFFF;
+        color: rgb(113, 113, 113);
+        font: 14pt Helvetica;
+}
+    QLineEdit{
+        border-radius:4px;
+        border: 1px solid gray;
+        background-color: #FFFFFF;
+}
+    QTextEdit{
+        border: 1px solid grey;  
+        border-radius:4px;
+        padding: 1px 5px 1px 3px; 
+        background-clip: border;
+        background-color: #F3F2EE;
+        color: #000000;
+        font: 14pt Times New Roman;
+}
+'''
\ No newline at end of file
diff --git a/.store/part14.py b/.store/part14.py
new file mode 100644
index 0000000..47cf16b
--- /dev/null
+++ b/.store/part14.py
@@ -0,0 +1,26 @@
+w1 = window_about()  # about
+w2 = window_update()  # update
+w3 = window3()  # main1
+w3.setAutoFillBackground(True)
+p = w3.palette()
+p.setColor(w3.backgroundRole(), QColor('#ECECEC'))
+w3.setPalette(p)
+w4 = window4()  # main2
+action1.triggered.connect(w1.activate)
+action2.triggered.connect(w2.activate)
+action3.triggered.connect(w3.activate)
+action4.triggered.connect(w4.activate)
+action5.triggered.connect(w3.focuson)
+action6.triggered.connect(w3.editoron)
+action7.triggered.connect(w3.realon)
+action8.triggered.connect(w3.rest_siz)
+action9.triggered.connect(w3.hide_dock_choice)
+action10.triggered.connect(w3.compact_mode_on)
+# tray.activated.connect(w3.activate)
+button_action.triggered.connect(w3.activate)
+btna2.triggered.connect(w3.focuson2)
+btna3.triggered.connect(w3.editoron2)
+btna4.triggered.connect(w3.pin_a_tab2)
+btna5.triggered.connect(w3.realon2)
+app.setStyleSheet(style_sheet_ori)
+app.exec()
diff --git a/.store/part2.py b/.store/part2.py
new file mode 100644
index 0000000..2e60262
--- /dev/null
+++ b/.store/part2.py
@@ -0,0 +1,188 @@
+class window_about(QWidget):  # 增加说明页面(About)
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):  # 说明页面内信息
+        self.setUpMainWindow()
+        self.resize(400, 380)
+        self.center()
+        self.setWindowTitle('About')
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def setUpMainWindow(self):
+        widg1 = QWidget()
+        l1 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('strmenu.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l1.setPixmap(png)  # 在l1里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l1.setMaximumWidth(100)
+        l1.setMaximumHeight(100)
+        l1.setScaledContents(True)
+        blay1 = QHBoxLayout()
+        blay1.setContentsMargins(0, 0, 0, 0)
+        blay1.addStretch()
+        blay1.addWidget(l1)
+        blay1.addStretch()
+        widg1.setLayout(blay1)
+
+        widg2 = QWidget()
+        lbl0 = QLabel('Strawberry', self)
+        font = PyQt6.QtGui.QFont()
+        font.setFamily("Arial")
+        font.setBold(True)
+        font.setPointSize(20)
+        lbl0.setFont(font)
+        blay2 = QHBoxLayout()
+        blay2.setContentsMargins(0, 0, 0, 0)
+        blay2.addStretch()
+        blay2.addWidget(lbl0)
+        blay2.addStretch()
+        widg2.setLayout(blay2)
+
+        widg3 = QWidget()
+        lbl1 = QLabel('Version beta 1.6.3', self)
+        blay3 = QHBoxLayout()
+        blay3.setContentsMargins(0, 0, 0, 0)
+        blay3.addStretch()
+        blay3.addWidget(lbl1)
+        blay3.addStretch()
+        widg3.setLayout(blay3)
+
+        widg4 = QWidget()
+        lbl2 = QLabel('This app is open-sourced.', self)
+        blay4 = QHBoxLayout()
+        blay4.setContentsMargins(0, 0, 0, 0)
+        blay4.addStretch()
+        blay4.addWidget(lbl2)
+        blay4.addStretch()
+        widg4.setLayout(blay4)
+
+        widg5 = QWidget()
+        lbl3 = QLabel('The beta version is free.', self)
+        blay5 = QHBoxLayout()
+        blay5.setContentsMargins(0, 0, 0, 0)
+        blay5.addStretch()
+        blay5.addWidget(lbl3)
+        blay5.addStretch()
+        widg5.setLayout(blay5)
+
+        widg6 = QWidget()
+        lbl4 = QLabel('本软件开源,', self)
+        blay6 = QHBoxLayout()
+        blay6.setContentsMargins(0, 0, 0, 0)
+        blay6.addStretch()
+        blay6.addWidget(lbl4)
+        blay6.addStretch()
+        widg6.setLayout(blay6)
+
+        widg7 = QWidget()
+        lbl5 = QLabel('测试版免费。', self)
+        blay7 = QHBoxLayout()
+        blay7.setContentsMargins(0, 0, 0, 0)
+        blay7.addStretch()
+        blay7.addWidget(lbl5)
+        blay7.addStretch()
+        widg7.setLayout(blay7)
+
+        widg8 = QWidget()
+        bt1 = QPushButton('The Author', self)
+        bt1.setMaximumHeight(20)
+        bt1.setMinimumWidth(100)
+        bt1.clicked.connect(self.intro)
+        bt2 = QPushButton('Github Page', self)
+        bt2.setMaximumHeight(20)
+        bt2.setMinimumWidth(100)
+        bt2.clicked.connect(self.homepage)
+        blay8 = QHBoxLayout()
+        blay8.setContentsMargins(0, 0, 0, 0)
+        blay8.addStretch()
+        blay8.addWidget(bt1)
+        blay8.addWidget(bt2)
+        blay8.addStretch()
+        widg8.setLayout(blay8)
+
+        widg9 = QWidget()
+        bt3 = QPushButton('🍪\n¥5', self)
+        bt3.setMaximumHeight(50)
+        bt3.setMinimumHeight(50)
+        bt3.setMinimumWidth(50)
+        bt3.clicked.connect(self.donate)
+        bt4 = QPushButton('🥪\n¥10', self)
+        bt4.setMaximumHeight(50)
+        bt4.setMinimumHeight(50)
+        bt4.setMinimumWidth(50)
+        bt4.clicked.connect(self.donate2)
+        bt5 = QPushButton('🍜\n¥20', self)
+        bt5.setMaximumHeight(50)
+        bt5.setMinimumHeight(50)
+        bt5.setMinimumWidth(50)
+        bt5.clicked.connect(self.donate3)
+        bt6 = QPushButton('🍕\n¥50', self)
+        bt6.setMaximumHeight(50)
+        bt6.setMinimumHeight(50)
+        bt6.setMinimumWidth(50)
+        bt6.clicked.connect(self.donate4)
+        blay9 = QHBoxLayout()
+        blay9.setContentsMargins(0, 0, 0, 0)
+        blay9.addStretch()
+        blay9.addWidget(bt3)
+        blay9.addWidget(bt4)
+        blay9.addWidget(bt5)
+        blay9.addWidget(bt6)
+        blay9.addStretch()
+        widg9.setLayout(blay9)
+
+        widg10 = QWidget()
+        lbl6 = QLabel('© 2022 Ryan-the-hito. All rights reserved.', self)
+        blay10 = QHBoxLayout()
+        blay10.setContentsMargins(0, 0, 0, 0)
+        blay10.addStretch()
+        blay10.addWidget(lbl6)
+        blay10.addStretch()
+        widg10.setLayout(blay10)
+
+        main_h_box = QVBoxLayout()
+        main_h_box.addWidget(widg1)
+        main_h_box.addWidget(widg2)
+        main_h_box.addWidget(widg3)
+        main_h_box.addWidget(widg4)
+        main_h_box.addWidget(widg5)
+        main_h_box.addWidget(widg6)
+        main_h_box.addWidget(widg7)
+        main_h_box.addWidget(widg8)
+        main_h_box.addWidget(widg9)
+        main_h_box.addWidget(widg10)
+        main_h_box.addStretch()
+        self.setLayout(main_h_box)
+
+    def intro(self):
+        webbrowser.open('https://github.com/Ryan-the-hito/Ryan-the-hito')
+
+    def homepage(self):
+        webbrowser.open('https://github.com/Ryan-the-hito/Strawberry')
+
+    def donate(self):
+        dlg = CustomDialog()
+        dlg.exec()
+
+    def donate2(self):
+        dlg = CustomDialog2()
+        dlg.exec()
+
+    def donate3(self):
+        dlg = CustomDialog3()
+        dlg.exec()
+
+    def donate4(self):
+        dlg = CustomDialog4()
+        dlg.exec()
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def activate(self):  # 设置窗口显示
+        self.show()
\ No newline at end of file
diff --git a/.store/part3.py b/.store/part3.py
new file mode 100644
index 0000000..8ebf281
--- /dev/null
+++ b/.store/part3.py
@@ -0,0 +1,68 @@
+class CustomDialog(QDialog):  # (About1)
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):
+        self.setUpMainWindow()
+        self.setWindowTitle("Thank you for your support!")
+        self.center()
+        self.resize(400, 390)
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def setUpMainWindow(self):
+        widge_all = QWidget()
+        l1 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('wechat5.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l1.setPixmap(png)  # 在l1里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l1.setMaximumSize(160, 240)
+        l1.setScaledContents(True)
+        l2 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('alipay5.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l2.setPixmap(png)  # 在l2里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l2.setMaximumSize(160, 240)
+        l2.setScaledContents(True)
+        bk = QHBoxLayout()
+        bk.setContentsMargins(0, 0, 0, 0)
+        bk.addWidget(l1)
+        bk.addWidget(l2)
+        widge_all.setLayout(bk)
+
+        m1 = QLabel('Thank you for your kind support! 😊', self)
+        m2 = QLabel('I will write more interesting apps! 🥳', self)
+
+        widg_c = QWidget()
+        bt1 = QPushButton('Thank you!', self)
+        bt1.setMaximumHeight(20)
+        bt1.setMinimumWidth(100)
+        bt1.clicked.connect(self.cancel)
+        bt2 = QPushButton('Donate later~', self)
+        bt2.setMaximumHeight(20)
+        bt2.setMinimumWidth(100)
+        bt2.clicked.connect(self.cancel)
+        blay8 = QHBoxLayout()
+        blay8.setContentsMargins(0, 0, 0, 0)
+        blay8.addStretch()
+        blay8.addWidget(bt1)
+        blay8.addWidget(bt2)
+        blay8.addStretch()
+        widg_c.setLayout(blay8)
+
+        self.layout = QVBoxLayout()
+        self.layout.addWidget(widge_all)
+        self.layout.addWidget(m1)
+        self.layout.addWidget(m2)
+        self.layout.addStretch()
+        self.layout.addWidget(widg_c)
+        self.layout.addStretch()
+        self.setLayout(self.layout)
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
\ No newline at end of file
diff --git a/.store/part4.py b/.store/part4.py
new file mode 100644
index 0000000..768c388
--- /dev/null
+++ b/.store/part4.py
@@ -0,0 +1,68 @@
+class CustomDialog2(QDialog):  # (About2)
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):
+        self.setUpMainWindow()
+        self.setWindowTitle("Thank you for your support!")
+        self.center()
+        self.resize(400, 390)
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def setUpMainWindow(self):
+        widge_all = QWidget()
+        l1 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('wechat10.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l1.setPixmap(png)  # 在l1里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l1.setMaximumSize(160, 240)
+        l1.setScaledContents(True)
+        l2 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('alipay10.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l2.setPixmap(png)  # 在l2里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l2.setMaximumSize(160, 240)
+        l2.setScaledContents(True)
+        bk = QHBoxLayout()
+        bk.setContentsMargins(0, 0, 0, 0)
+        bk.addWidget(l1)
+        bk.addWidget(l2)
+        widge_all.setLayout(bk)
+
+        m1 = QLabel('Thank you for your kind support! 😊', self)
+        m2 = QLabel('I will write more interesting apps! 🥳', self)
+
+        widg_c = QWidget()
+        bt1 = QPushButton('Thank you!', self)
+        bt1.setMaximumHeight(20)
+        bt1.setMinimumWidth(100)
+        bt1.clicked.connect(self.cancel)
+        bt2 = QPushButton('Donate later~', self)
+        bt2.setMaximumHeight(20)
+        bt2.setMinimumWidth(100)
+        bt2.clicked.connect(self.cancel)
+        blay8 = QHBoxLayout()
+        blay8.setContentsMargins(0, 0, 0, 0)
+        blay8.addStretch()
+        blay8.addWidget(bt1)
+        blay8.addWidget(bt2)
+        blay8.addStretch()
+        widg_c.setLayout(blay8)
+
+        self.layout = QVBoxLayout()
+        self.layout.addWidget(widge_all)
+        self.layout.addWidget(m1)
+        self.layout.addWidget(m2)
+        self.layout.addStretch()
+        self.layout.addWidget(widg_c)
+        self.layout.addStretch()
+        self.setLayout(self.layout)
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
\ No newline at end of file
diff --git a/.store/part5.py b/.store/part5.py
new file mode 100644
index 0000000..1b49758
--- /dev/null
+++ b/.store/part5.py
@@ -0,0 +1,68 @@
+class CustomDialog3(QDialog):  # (About3)
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):
+        self.setUpMainWindow()
+        self.setWindowTitle("Thank you for your support!")
+        self.center()
+        self.resize(400, 390)
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def setUpMainWindow(self):
+        widge_all = QWidget()
+        l1 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('wechat20.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l1.setPixmap(png)  # 在l1里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l1.setMaximumSize(160, 240)
+        l1.setScaledContents(True)
+        l2 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('alipay20.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l2.setPixmap(png)  # 在l2里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l2.setMaximumSize(160, 240)
+        l2.setScaledContents(True)
+        bk = QHBoxLayout()
+        bk.setContentsMargins(0, 0, 0, 0)
+        bk.addWidget(l1)
+        bk.addWidget(l2)
+        widge_all.setLayout(bk)
+
+        m1 = QLabel('Thank you for your kind support! 😊', self)
+        m2 = QLabel('I will write more interesting apps! 🥳', self)
+
+        widg_c = QWidget()
+        bt1 = QPushButton('Thank you!', self)
+        bt1.setMaximumHeight(20)
+        bt1.setMinimumWidth(100)
+        bt1.clicked.connect(self.cancel)
+        bt2 = QPushButton('Donate later~', self)
+        bt2.setMaximumHeight(20)
+        bt2.setMinimumWidth(100)
+        bt2.clicked.connect(self.cancel)
+        blay8 = QHBoxLayout()
+        blay8.setContentsMargins(0, 0, 0, 0)
+        blay8.addStretch()
+        blay8.addWidget(bt1)
+        blay8.addWidget(bt2)
+        blay8.addStretch()
+        widg_c.setLayout(blay8)
+
+        self.layout = QVBoxLayout()
+        self.layout.addWidget(widge_all)
+        self.layout.addWidget(m1)
+        self.layout.addWidget(m2)
+        self.layout.addStretch()
+        self.layout.addWidget(widg_c)
+        self.layout.addStretch()
+        self.setLayout(self.layout)
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
\ No newline at end of file
diff --git a/.store/part6.py b/.store/part6.py
new file mode 100644
index 0000000..9f8d1eb
--- /dev/null
+++ b/.store/part6.py
@@ -0,0 +1,68 @@
+class CustomDialog4(QDialog):  # (About4)
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):
+        self.setUpMainWindow()
+        self.setWindowTitle("Thank you for your support!")
+        self.center()
+        self.resize(400, 390)
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def setUpMainWindow(self):
+        widge_all = QWidget()
+        l1 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('wechat50.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l1.setPixmap(png)  # 在l1里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l1.setMaximumSize(160, 240)
+        l1.setScaledContents(True)
+        l2 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('alipay50.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l2.setPixmap(png)  # 在l2里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l2.setMaximumSize(160, 240)
+        l2.setScaledContents(True)
+        bk = QHBoxLayout()
+        bk.setContentsMargins(0, 0, 0, 0)
+        bk.addWidget(l1)
+        bk.addWidget(l2)
+        widge_all.setLayout(bk)
+
+        m1 = QLabel('Thank you for your kind support! 😊', self)
+        m2 = QLabel('I will write more interesting apps! 🥳', self)
+
+        widg_c = QWidget()
+        bt1 = QPushButton('Thank you!', self)
+        bt1.setMaximumHeight(20)
+        bt1.setMinimumWidth(100)
+        bt1.clicked.connect(self.cancel)
+        bt2 = QPushButton('Donate later~', self)
+        bt2.setMaximumHeight(20)
+        bt2.setMinimumWidth(100)
+        bt2.clicked.connect(self.cancel)
+        blay8 = QHBoxLayout()
+        blay8.setContentsMargins(0, 0, 0, 0)
+        blay8.addStretch()
+        blay8.addWidget(bt1)
+        blay8.addWidget(bt2)
+        blay8.addStretch()
+        widg_c.setLayout(blay8)
+
+        self.layout = QVBoxLayout()
+        self.layout.addWidget(widge_all)
+        self.layout.addWidget(m1)
+        self.layout.addWidget(m2)
+        self.layout.addStretch()
+        self.layout.addWidget(widg_c)
+        self.layout.addStretch()
+        self.setLayout(self.layout)
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
\ No newline at end of file
diff --git a/.store/part7.py b/.store/part7.py
new file mode 100644
index 0000000..bff737a
--- /dev/null
+++ b/.store/part7.py
@@ -0,0 +1,41 @@
+class window_update(QWidget):  # 增加更新页面(Check for Updates)
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):  # 说明页面内信息
+
+        lbl = QLabel('Current Version: beta 1.6.3', self)
+        lbl.move(110, 75)
+
+        lbl0 = QLabel('Check Now:', self)
+        lbl0.move(30, 20)
+
+        bt1 = QPushButton('Check Github', self)
+        bt1.clicked.connect(self.upd)
+        bt1.move(110, 15)
+
+        bt2 = QPushButton('Check Baidu Net Disk', self)
+        bt2.clicked.connect(self.upd2)
+        bt2.move(110, 45)
+
+        self.resize(300, 110)
+        self.center()
+        self.setWindowTitle('Check for Updates')
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
+
+    def upd(self):
+        webbrowser.open('https://github.com/Ryan-the-hito/Strawberry/releases')
+
+    def upd2(self):
+        webbrowser.open('https://pan.baidu.com/s/1ItBXJLfCCUEyjlvSO_yH1w?pwd=dpcd')
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def activate(self):  # 设置窗口显示
+        self.show()
\ No newline at end of file
diff --git a/.store/part8.py b/.store/part8.py
new file mode 100644
index 0000000..bd71c03
--- /dev/null
+++ b/.store/part8.py
@@ -0,0 +1,95 @@
+class CustomDialog_warn(QDialog):  # 提醒检查路径
+    def __init__(self):
+        super().__init__()
+        self.initUI()
+
+    def initUI(self):
+        self.setUpMainWindow()
+        self.center()
+        self.resize(500, 490)
+        self.setFocus()
+        self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
+        self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, True)
+
+    def setUpMainWindow(self):
+        l0 = QLabel('Please open settings and set your paths!', self)
+        font = PyQt6.QtGui.QFont()
+        font.setFamily("Arial")
+        font.setBold(True)
+        font.setPointSize(15)
+        l0.setFont(font)
+
+        l1 = QLabel(self)
+        png = PyQt6.QtGui.QPixmap('setpath.png')  # 调用QtGui.QPixmap方法,打开一个图片,存放在变量png中
+        l1.setPixmap(png)  # 在l1里面,调用setPixmap命令,建立一个图像存放框,并将之前的图像png存放在这个框框里。
+        l1.setMaximumSize(177, 314)
+        l1.setScaledContents(True)
+
+        btn_can = QPushButton('Got it!', self)
+        btn_can.clicked.connect(self.cancel)
+        btn_can.setFixedWidth(150)
+        btn_can.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #FFFFFF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #000000
+                ''')
+
+        w0 = QWidget()
+        blay0 = QHBoxLayout()
+        blay0.setContentsMargins(0, 0, 0, 0)
+        blay0.addStretch()
+        blay0.addWidget(l0)
+        blay0.addStretch()
+        w0.setLayout(blay0)
+
+        w1 = QWidget()
+        blay1 = QHBoxLayout()
+        blay1.setContentsMargins(0, 0, 0, 0)
+        blay1.addStretch()
+        blay1.addWidget(l1)
+        blay1.addStretch()
+        w1.setLayout(blay1)
+
+        w2 = QWidget()
+        blay2 = QHBoxLayout()
+        blay2.setContentsMargins(0, 0, 0, 0)
+        blay2.addStretch()
+        blay2.addWidget(btn_can)
+        blay2.addStretch()
+        w2.setLayout(blay2)
+
+        w3 = QWidget()
+        blay3 = QVBoxLayout()
+        blay3.setContentsMargins(0, 0, 0, 0)
+        blay3.addStretch()
+        blay3.addWidget(w0)
+        blay3.addWidget(w1)
+        blay3.addWidget(w2)
+        blay3.addStretch()
+        w3.setLayout(blay3)
+        w3.setStyleSheet('''
+            border: 1px solid #ECECEC;
+            background: #ECECEC;
+            border-radius: 9px;
+        ''')
+
+        op = QGraphicsOpacityEffect()
+        op.setOpacity(0.8)
+        w3.setGraphicsEffect(op)
+        w3.setAutoFillBackground(True)
+
+        blayend = QHBoxLayout()
+        blayend.setContentsMargins(0, 0, 0, 0)
+        blayend.addWidget(w3)
+        self.setLayout(blayend)
+
+    def center(self):  # 设置窗口居中
+        qr = self.frameGeometry()
+        cp = self.screen().availableGeometry().center()
+        qr.moveCenter(cp)
+        self.move(qr.topLeft())
+
+    def cancel(self):  # 设置取消键的功能
+        self.close()
\ No newline at end of file
diff --git a/.store/part9.py b/.store/part9.py
new file mode 100644
index 0000000..29842f4
--- /dev/null
+++ b/.store/part9.py
@@ -0,0 +1,5645 @@
+class window3(QWidget):  # 主程序的代码块(Find a dirty word!)
+    def __init__(self):
+        super().__init__()
+        self.dragPosition = self.pos()
+        self.initUI()
+
+    def initUI(self):  # 设置窗口内布局
+        self.setUpMainWindow()
+        MOST_WEIGHT = int(self.screen().availableGeometry().width() * 0.75)
+        HALF_WEIGHT = int(self.screen().availableGeometry().width() / 2)
+        MINI_WEIGHT = int(self.screen().availableGeometry().width() / 4)
+        SCREEN_WEIGHT = int(self.screen().availableGeometry().width())
+
+        DE_HEIGHT = int(self.screen().availableGeometry().height())
+        HALF_HEIGHT = int(self.screen().availableGeometry().height() * 0.5)
+        BIGGIST_HEIGHT = int(self.screen().availableGeometry().height())
+
+        self.resize(HALF_WEIGHT, DE_HEIGHT)
+        self.move_window2(SCREEN_WEIGHT - 10, self.pos().y())
+        self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
+        self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, True)
+        self.setMinimumSize(MINI_WEIGHT, HALF_HEIGHT)
+        self.setMaximumSize(MOST_WEIGHT, BIGGIST_HEIGHT)
+        self.show()
+        self.tab_bar.setVisible(False)
+        with open('win_width.txt', 'w', encoding='utf-8') as f0:
+            f0.write(str(self.width()))
+        self.new_width = 10
+        self.resize(self.new_width, DE_HEIGHT)
+        app.setStyleSheet(style_sheet_ori)
+        self.pathcheck()
+        self.movesysfile()
+
+    def setUpMainWindow(self):
+        self.tab_bar = QTabWidget()
+        self.word_tab = QWidget()
+        self.art_tab = QWidget()
+        self.insp_tab = QWidget()
+
+        self.tab_bar.addTab(self.word_tab, "Expressions")
+        self.tab_bar.addTab(self.art_tab, "Articles")
+        self.tab_bar.addTab(self.insp_tab, "Inspirations")
+
+        self.btn_00 = QPushButton('', self)
+        self.btn_00.clicked.connect(self.pin_a_tab)
+        self.btn_00.setFixedHeight(100)
+        self.btn_00.setFixedWidth(10)
+        self.i = 1
+
+        lbtn = QWidget()
+        left_btn = QVBoxLayout()
+        left_btn.setContentsMargins(0, 0, 0, 0)
+        left_btn.addStretch()
+        left_btn.addWidget(self.btn_00)
+        left_btn.addStretch()
+        lbtn.setLayout(left_btn)
+
+        main_h_box = QHBoxLayout()
+        main_h_box.setContentsMargins(0, 0, 0, 0)
+        main_h_box.addWidget(lbtn)
+        main_h_box.addWidget(self.tab_bar, 1)
+        self.setLayout(main_h_box)
+
+        # Call methods that contain the widgets for each tab
+        self.wordTab()
+        self.artTab()
+        self.inspiTab()
+
+    def move_window(self, width, height):
+        animation = QPropertyAnimation(self, b"geometry", self)
+        animation.setDuration(250)
+        new_pos = QRect(width, height, self.width(), self.height())
+        animation.setEndValue(new_pos)
+        animation.start()
+        self.i += 1
+
+    def move_window2(self, width, height):
+        animation = QPropertyAnimation(self, b"geometry", self)
+        animation.setDuration(400)
+        new_pos = QRect(width, height, self.width(), self.height())
+        animation.setEndValue(new_pos)
+        animation.start()
+
+    def mousePressEvent(self, event):
+        if event.button() == Qt.MouseButton.LeftButton:
+            self.dragPosition = event.globalPosition().toPoint() - self.pos()
+
+    def mouseMoveEvent(self, event):
+        if event.buttons() == Qt.MouseButton.LeftButton:
+            self.move(event.globalPosition().toPoint() - self.dragPosition)
+
+    def pathcheck(self):
+        home_dir = str(Path.home())
+        tarname1 = "StrawberryAppPath"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.mkdir(fulldir1)
+        tarname2 = "DoNotDelete.txt"
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        if not os.path.exists(fulldir2):
+            with open(fulldir2, 'a', encoding='utf-8') as f0:
+                f0.write('')
+        dnd = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+        dnd = dnd.rstrip('\n')
+        dndl = dnd.split('\n')
+        if dnd != '' and len(dndl) == 10:
+            with open('path_art.txt', 'w', encoding='utf-8') as f1:
+                f1.write(dndl[0])
+            with open('path_aut.txt', 'w', encoding='utf-8') as f2:
+                f2.write(dndl[1])
+            with open('path_ins.txt', 'w', encoding='utf-8') as f3:
+                f3.write(dndl[2])
+            with open('path_pub.txt', 'w', encoding='utf-8') as f4:
+                f4.write(dndl[3])
+            with open('path_pro.txt', 'w', encoding='utf-8') as f5:
+                f5.write(dndl[4])
+            with open('path_con.txt', 'w', encoding='utf-8') as f6:
+                f6.write(dndl[5])
+            with open('path_the.txt', 'w', encoding='utf-8') as f7:
+                f7.write(dndl[6])
+            with open('path_met.txt', 'w', encoding='utf-8') as f8:
+                f8.write(dndl[7])
+            with open('path_boo.txt', 'w', encoding='utf-8') as f9:
+                f9.write(dndl[8])
+            with open('path_scr.txt', 'w', encoding='utf-8') as f10:
+                f10.write(dndl[9])
+        if dnd == '' or len(dndl) != 10:
+            self.needpath()
+
+    def movesysfile(self):
+        path10 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if path10 != '':
+            tarname_cls = "elegantpaper.cls"
+            fulldir_cls = os.path.join(path10, tarname_cls)
+            contend_cls = codecs.open('elegantpaper.cls', 'r', encoding='utf-8').read()
+            with open(fulldir_cls, 'w', encoding='utf-8') as f8:
+                f8.write(contend_cls)
+            tarname_bib = 'reference.bib'
+            fulldir_bib = os.path.join(path10, tarname_bib)
+            with open(fulldir_bib, 'w', encoding='utf-8') as f8:
+                f8.write('')
+            tarname_not = "elegantnote.cls"
+            fulldir_not = os.path.join(path10, tarname_not)
+            contend_not = codecs.open('elegantnote.cls', 'r', encoding='utf-8').read()
+            with open(fulldir_not, 'w', encoding='utf-8') as f8:
+                f8.write(contend_not)
+            tarname_iee = "IEEEtran.cls"
+            fulldir_iee = os.path.join(path10, tarname_iee)
+            contend_iee = codecs.open('IEEEtran.cls', 'r', encoding='utf-8').read()
+            with open(fulldir_iee, 'w', encoding='utf-8') as f8:
+                f8.write(contend_iee)
+            tarname_jor1 = "journalCNdef.tex"
+            fulldir_jor1 = os.path.join(path10, tarname_jor1)
+            contend_jor1 = codecs.open('journalCNdef.tex', 'r', encoding='utf-8').read()
+            with open(fulldir_jor1, 'w', encoding='utf-8') as f8:
+                f8.write(contend_jor1)
+            tarname_jor2 = "journalCNdef2.tex"
+            fulldir_jor2 = os.path.join(path10, tarname_jor2)
+            contend_jor2 = codecs.open('journalCNdef2.tex', 'r', encoding='utf-8').read()
+            with open(fulldir_jor2, 'w', encoding='utf-8') as f8:
+                f8.write(contend_jor2)
+            tarname_jor3 = "journalCNpicins.sty"
+            fulldir_jor3 = os.path.join(path10, tarname_jor3)
+            contend_jor3 = codecs.open('journalCNpicins.sty', 'r', encoding='utf-8').read()
+            with open(fulldir_jor3, 'w', encoding='utf-8') as f8:
+                f8.write(contend_jor3)
+            tarname_bea = "BeamerCN.sty"
+            fulldir_bea = os.path.join(path10, tarname_bea)
+            contend_bea = codecs.open('BeamerCN.sty', 'r', encoding='utf-8').read()
+            with open(fulldir_bea, 'w', encoding='utf-8') as f8:
+                f8.write(contend_bea)
+
+    def needpath(self):
+        warn = CustomDialog_warn()
+        warn.exec()
+
+    def wordTab(self):
+        self.bigwi1 = QWidget()
+
+        t1 = QWidget()
+        fontw = PyQt6.QtGui.QFont()
+        fontw.setBold(True)
+        lbl1 = QLabel('Just collect!', self)
+        lbl1.setFont(fontw)
+        b1 = QHBoxLayout()
+        b1.setContentsMargins(0, 0, 0, 0)
+        b1.addStretch()
+        b1.addWidget(lbl1)
+        b1.addStretch()
+        t1.setLayout(b1)
+
+        t2 = QWidget()
+        self.lew1 = QLineEdit(self)
+        self.lew1.setPlaceholderText('Enter your word!')
+        self.lew1.setFixedHeight(60)
+        self.lew1.setStyleSheet(
+            '''font: 30pt;'''
+        )
+        btn_wa = QPushButton('Add to waiting list!', self)
+        btn_wa.clicked.connect(self.add_to_wait)
+        btn_wa.setMaximumHeight(20)
+        btn_wa.setMinimumWidth(150)
+        btn_wb = QPushButton('Import from a word list (one word in one line)', self)
+        btn_wb.clicked.connect(self.importlist)
+        btn_wb.setMaximumHeight(20)
+        btn_wb.setMinimumWidth(150)
+        b2 = QVBoxLayout()
+        b2.setContentsMargins(0, 0, 0, 0)
+        b2.addWidget(self.lew1)
+        b2.addWidget(btn_wa)
+        b2.addWidget(btn_wb)
+        t2.setLayout(b2)
+
+        t2_5 = QWidget()
+        self.lblexp_2 = QLabel('', self)
+        b2_5 = QHBoxLayout()
+        b2_5.setContentsMargins(0, 0, 0, 0)
+        b2_5.addStretch()
+        b2_5.addWidget(self.lblexp_2)
+        b2_5.addStretch()
+        t2_5.setLayout(b2_5)
+
+        t3 = QWidget()
+        fontw = PyQt6.QtGui.QFont()
+        fontw.setBold(True)
+        lbl3 = QLabel('Make cards!', self)
+        lbl3.setFont(fontw)
+        b3 = QHBoxLayout()
+        b3.setContentsMargins(0, 0, 0, 0)
+        b3.addStretch()
+        b3.addWidget(lbl3)
+        b3.addStretch()
+        t3.setLayout(b3)
+
+        t4 = QWidget()
+        self.lew2 = QLineEdit(self)
+        self.lew2.setPlaceholderText('Deck name')
+        btn_wc = QPushButton('Create', self)
+        btn_wc.clicked.connect(self.createdeck)
+        btn_wc.setMaximumHeight(20)
+        btn_wc.setMinimumWidth(100)
+        b4 = QHBoxLayout()
+        b4.setContentsMargins(0, 0, 0, 0)
+        b4.addWidget(self.lew2)
+        b4.addWidget(btn_wc)
+        t4.setLayout(b4)
+
+        t5 = QWidget()
+        btn_wd = QPushButton('Open a .txt deck', self)
+        btn_wd.clicked.connect(self.opendeck)
+        btn_wd.setMaximumHeight(20)
+        btn_we = QPushButton('Close the deck', self)
+        btn_we.clicked.connect(self.closedeck)
+        btn_we.setMaximumHeight(20)
+        b5 = QHBoxLayout()
+        b5.setContentsMargins(0, 0, 0, 0)
+        b5.addWidget(btn_wd)
+        b5.addWidget(btn_we)
+        t5.setLayout(b5)
+
+        t6 = QWidget()
+        lbl4 = QLabel('Focusing on:', self)
+        lbl4.setMaximumWidth(80)
+        self.wid_word = QComboBox(self)
+        self.wid_word.setCurrentIndex(0)
+        self.wid_word.setMaximumWidth(275)
+        home_dir = str(Path.home())
+        tarname1 = "StrawberryAppPath"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.mkdir(fulldir1)
+        tarname2 = "wordwaitinglist.txt"
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        with open(fulldir2, 'a', encoding='utf-8') as f0:
+            f0.write('')
+        contend = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+        alllist = contend.split('\n')
+        alllist.sort()
+        if '' in alllist:
+            alllist.remove('')
+        if alllist == ['']:
+            self.wid_word.addItems(['No expression on list'])
+        if alllist != []:
+            self.wid_word.addItems(alllist)
+        num = len(alllist)
+        wri = 'There are ' + str(num) + ' expressions on your list now!'
+        self.lblexp_2.setText(wri)
+        b6 = QHBoxLayout()
+        b6.setContentsMargins(0, 0, 0, 0)
+        b6.addWidget(lbl4)
+        b6.addWidget(self.wid_word)
+        t6.setLayout(b6)
+
+        btn_sow = QPushButton('Search the expression on Collins Dictionary!', self)
+        btn_sow.clicked.connect(self.search_on_web)
+        btn_sow.setMaximumHeight(20)
+
+        self.textw1 = QPlainTextEdit(self)
+        self.textw1.setReadOnly(False)
+        self.textw1.setObjectName("edit")
+        self.textw1.setPlaceholderText('Explanations')
+
+        self.lew3 = QLineEdit(self)
+        self.lew3.setPlaceholderText('Tags (Use 、if there are many)')
+
+        t6_5 = QWidget()
+        btn_makecard = QPushButton('Make a basic card!', self)
+        btn_makecard.clicked.connect(self.makecard)
+        btn_makecard.setMaximumHeight(20)
+        btn_clearall = QPushButton('Next card!', self)
+        btn_clearall.clicked.connect(self.next_card)
+        btn_clearall.setMaximumHeight(20)
+        b6_5 = QHBoxLayout()
+        b6_5.setContentsMargins(0, 0, 0, 0)
+        b6_5.addWidget(btn_makecard)
+        b6_5.addWidget(btn_clearall)
+        t6_5.setLayout(b6_5)
+
+        t7 = QWidget()
+        fontw = PyQt6.QtGui.QFont()
+        fontw.setBold(True)
+        lbl7 = QLabel('Search in deck!', self)
+        lbl7.setFont(fontw)
+        b7 = QHBoxLayout()
+        b7.setContentsMargins(0, 0, 0, 0)
+        b7.addStretch()
+        b7.addWidget(lbl7)
+        b7.addStretch()
+        t7.setLayout(b7)
+
+        t8 = QWidget()
+        self.lew4 = QLineEdit(self)
+        self.lew4.setPlaceholderText('What tag are you looking for?')
+        btn_wsearch = QPushButton('Search', self)
+        btn_wsearch.clicked.connect(self.searchmeaning)
+        btn_wsearch.setMaximumHeight(20)
+        btn_wsearch.setMinimumWidth(100)
+        b8 = QHBoxLayout()
+        b8.setContentsMargins(0, 0, 0, 0)
+        b8.addWidget(self.lew4)
+        b8.addWidget(btn_wsearch)
+        t8.setLayout(b8)
+
+        self.text_res = QPlainTextEdit(self)
+        self.text_res.setReadOnly(True)
+        self.text_res.setObjectName("edit")
+        self.text_res.setPlaceholderText('Results will appear here.')
+
+        btn_clearab = QPushButton('Start a new search!', self)
+        btn_clearab.clicked.connect(self.newsearch)
+        btn_clearab.setMaximumHeight(20)
+
+        lay1 = QVBoxLayout()
+        lay1.setContentsMargins(0, 0, 0, 0)
+        lay1.addWidget(t1)
+        lay1.addWidget(t2)
+        lay1.addWidget(t2_5)
+        lay1.addWidget(t3)
+        lay1.addWidget(t4)
+        lay1.addWidget(t5)
+        lay1.addWidget(t6)
+        lay1.addWidget(btn_sow)
+        lay1.addWidget(self.textw1)
+        lay1.addWidget(self.lew3)
+        lay1.addWidget(t6_5)
+        lay1.addWidget(t7)
+        lay1.addWidget(t8)
+        lay1.addWidget(self.text_res)
+        lay1.addWidget(btn_clearab)
+        self.bigwi1.setLayout(lay1)
+
+        self.bigwi2 = QTabWidget()
+        self.word_sub = QWidget()
+        self.bigwi2.addTab(self.word_sub, 'Card')
+
+        self.word_card()
+
+        self.bigwi3 = QTabWidget()
+        self.rtm_word = QWidget()
+        self.bigwi3.addTab(self.rtm_word, 'Realtime')
+        self.realword()
+        self.bigwi3.setVisible(False)
+
+        self.page1_v_box = QHBoxLayout()
+        self.page1_v_box.addWidget(self.bigwi1, 1)
+        self.page1_v_box.addWidget(self.bigwi2, 1)
+        self.page1_v_box.addWidget(self.bigwi3, 1)
+        self.word_tab.setLayout(self.page1_v_box)
+
+    def word_card(self):
+        self.carda = QPlainTextEdit(self)
+        self.carda.setMinimumHeight(40)
+        self.carda.setStyleSheet(
+            '''font: 30pt;'''
+        )
+        self.carda.setReadOnly(False)
+        self.carda.textChanged.connect(self.card1changed)
+        self.scrollbar3 = self.carda.verticalScrollBar()
+        self.scrollbar3.valueChanged.connect(self.card1scroll)
+        self.cardb = QPlainTextEdit(self)
+        self.cardb.setMinimumHeight(40)
+        self.cardb.setStyleSheet(
+            '''font: 20pt;'''
+        )
+        self.cardb.setReadOnly(False)
+        self.cardb.textChanged.connect(self.card2changed)
+        self.scrollbar4 = self.cardb.verticalScrollBar()
+        self.scrollbar4.valueChanged.connect(self.card2scroll)
+        btn_exp1 = QPushButton('Save edits', self)
+        btn_exp1.clicked.connect(self.editcardsave)
+        btn_exp1.setMaximumHeight(20)
+        btn_exp1.setShortcut('Ctrl+s')
+        r1 = QVBoxLayout()
+        r1.addWidget(self.carda)
+        r1.addWidget(self.cardb)
+        r1.addWidget(btn_exp1)
+        self.word_sub.setLayout(r1)
+
+    def realword(self):
+        self.card_rt = QTextEdit(self)
+        self.card_rt.setReadOnly(True)
+        self.card_rt.setStyleSheet(
+            '''font: 30pt;'''
+        )
+        self.card_rt.setAlignment(Qt.AlignmentFlag.AlignCenter)
+        self.card_rt2 = QTextEdit(self)
+        self.card_rt2.setReadOnly(True)
+        self.card_rt2.setStyleSheet(
+            '''font: 20pt;'''
+        )
+        self.card_rt2.setAlignment(Qt.AlignmentFlag.AlignCenter)
+        btn_cls = QPushButton('Close realtime window', self)
+        btn_cls.clicked.connect(self.close_re)
+        btn_cls.setMaximumHeight(20)
+        r2 = QVBoxLayout()
+        r2.addWidget(self.card_rt)
+        r2.addWidget(self.card_rt2)
+        r2.addWidget(btn_cls)
+        self.rtm_word.setLayout(r2)
+
+    def artTab(self):
+        self.description_box = QWidget()
+
+        self.upper1 = QWidget()
+
+        self.read_t1 = QWidget()
+        lbl1 = QLabel('Title:', self)
+        self.le1 = QLineEdit(self)
+        self.le1.setPlaceholderText('Enter your text')
+        b1 = QHBoxLayout()
+        b1.setContentsMargins(0, 0, 0, 0)
+        b1.addWidget(lbl1)
+        b1.addWidget(self.le1)
+        self.read_t1.setLayout(b1)
+
+        self.read_t2 = QWidget()
+        self.lblread_2 = QLabel('Authors:', self)
+        self.le2 = QLineEdit(self)
+        self.le2.setPlaceholderText('Use 、if there are many and % after translators')
+        b2 = QHBoxLayout()
+        b2.setContentsMargins(0, 0, 0, 0)
+        b2.addWidget(self.lblread_2)
+        b2.addWidget(self.le2)
+        self.read_t2.setLayout(b2)
+
+        self.read_t7 = QWidget()
+        lbl7 = QLabel('Institutes:', self)
+        self.le7 = QLineEdit(self)
+        self.le7.setPlaceholderText('Use 、if there are many')
+        b7 = QHBoxLayout()
+        b7.setContentsMargins(0, 0, 0, 0)
+        b7.addWidget(lbl7)
+        b7.addWidget(self.le7)
+        self.read_t7.setLayout(b7)
+
+        self.read_t3 = QWidget()
+        lbl3 = QLabel('Publication:', self)
+        self.le3 = QLineEdit(self)
+        self.le3.setPlaceholderText('Enter your text')
+        lbl3_1 = QLabel('Press:', self)
+        self.le3_1 = QLineEdit(self)
+        self.le3_1.setPlaceholderText('Enter your text')
+        b3 = QHBoxLayout()
+        b3.setContentsMargins(0, 0, 0, 0)
+        b3.addWidget(lbl3)
+        b3.addWidget(self.le3)
+        b3.addWidget(lbl3_1)
+        b3.addWidget(self.le3_1)
+        self.read_t3.setLayout(b3)
+
+        self.web_t3 = QWidget()
+        lblweb3 = QLabel('URL:', self)
+        self.leweb3 = QLineEdit(self)
+        self.leweb3.setPlaceholderText('Enter your text')
+        ba3 = QHBoxLayout()
+        ba3.setContentsMargins(0, 0, 0, 0)
+        ba3.addWidget(lblweb3)
+        ba3.addWidget(self.leweb3)
+        self.web_t3.setLayout(ba3)
+        self.web_t3.setVisible(False)
+
+        self.read_t4 = QWidget()
+        lbl4 = QLabel('Year:', self)
+        self.le4 = QLineEdit(self)
+        self.le4.setPlaceholderText('Enter your text')
+        lbl4_1 = QLabel('Vol / Mon:', self)
+        self.le4_1 = QLineEdit(self)
+        self.le4_1.setPlaceholderText('Enter your text')
+        b4 = QHBoxLayout()
+        b4.setContentsMargins(0, 0, 0, 0)
+        b4.addWidget(lbl4)
+        b4.addWidget(self.le4)
+        b4.addWidget(lbl4_1)
+        b4.addWidget(self.le4_1)
+        self.read_t4.setLayout(b4)
+
+        self.read_t5 = QWidget()
+        lbl5 = QLabel('Tags:', self)
+        self.le5 = QLineEdit(self)
+        self.le5.setPlaceholderText('Use 、if there are many')
+        b5 = QHBoxLayout()
+        b5.setContentsMargins(0, 0, 0, 0)
+        b5.addWidget(lbl5)
+        b5.addWidget(self.le5)
+        self.read_t5.setLayout(b5)
+
+        self.read_t6 = QWidget()
+        btn1 = QPushButton('Open', self)
+        btn1.clicked.connect(self.openextis)
+        btn1.setMaximumHeight(20)
+        self.btnmain2 = QPushButton('Add', self)
+        self.btnmain2.clicked.connect(self.addmain)
+        self.btnmain2.setMaximumHeight(20)
+        btn3 = QPushButton('Clear', self)
+        btn3.clicked.connect(self.clearabv)
+        btn3.setMaximumHeight(20)
+        self.btnx4 = QPushButton('🔼', self)
+        self.btnx4.clicked.connect(self.showlist)
+        self.btnx4.setFixedHeight(20)
+        self.btnx4.setFixedWidth(20)
+        b6 = QHBoxLayout()
+        b6.setContentsMargins(0, 0, 0, 0)
+        b6.addWidget(btn1)
+        b6.addWidget(self.btnmain2)
+        b6.addWidget(btn3)
+        b6.addWidget(self.btnx4)
+        self.read_t6.setLayout(b6)
+
+        self.read_t8 = QWidget()
+        self.le8 = QLineEdit(self)
+        self.le8.setPlaceholderText('Of a book?')
+        self.le9 = QLineEdit(self)
+        self.le9.setPlaceholderText('Of a chapter?')
+        self.le10 = QLineEdit(self)
+        self.le10.setPlaceholderText('Page range')
+        b8 = QHBoxLayout()
+        b8.setContentsMargins(0, 0, 0, 0)
+        b8.addWidget(self.le8)
+        b8.addWidget(self.le9)
+        b8.addWidget(self.le10)
+        self.read_t8.setLayout(b8)
+
+        self.web_t8 = QWidget()
+        self.leweb8 = QLineEdit(self)
+        self.leweb8.setPlaceholderText('Conference?')
+        self.leweb9 = QLineEdit(self)
+        self.leweb9.setPlaceholderText('Host Institution?')
+        self.leweb10 = QLineEdit(self)
+        self.leweb10.setPlaceholderText('Place?')
+        ba8 = QHBoxLayout()
+        ba8.setContentsMargins(0, 0, 0, 0)
+        ba8.addWidget(self.leweb8)
+        ba8.addWidget(self.leweb9)
+        ba8.addWidget(self.leweb10)
+        self.web_t8.setLayout(ba8)
+        self.web_t8.setVisible(False)
+
+        supper1 = QVBoxLayout()
+        supper1.setContentsMargins(0, 10, 0, 0)
+        supper1.addWidget(self.read_t1)
+        supper1.addWidget(self.read_t2)
+        supper1.addWidget(self.read_t7)
+        supper1.addWidget(self.read_t3)
+        supper1.addWidget(self.web_t3)
+        supper1.addWidget(self.read_t8)
+        supper1.addWidget(self.web_t8)
+        supper1.addWidget(self.read_t4)
+        supper1.addWidget(self.read_t5)
+        supper1.addWidget(self.read_t6)
+        self.upper1.setLayout(supper1)
+
+        self.widget0 = QComboBox(self)
+        self.widget0.setCurrentIndex(0)
+        self.widget0.currentIndexChanged.connect(self.index_changed)
+        defalist = ['Append at the end (default)']
+        if self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname1 = str(self.le1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+            pattern = re.compile(r'## (.*?)\n')
+            result = pattern.findall(maintxt)
+            result = '☆'.join(result)
+            result = result.replace('#', '')
+            result = result.replace('# ', '')
+            result = result.replace('Q/P: ', '')
+            result = result.split('☆')
+            for i in range(len(result)):
+                result[i] = 'After ' + result[i]
+                result[i] = ''.join(result[i])
+            defalist = defalist + result
+        self.widget0.addItems(defalist)
+
+        self.tabs = QTabWidget()
+        self.tabs.setTabPosition(QTabWidget.TabPosition.North)
+        self.one_tab = QWidget()
+        self.two_tab = QWidget()
+        self.three_tab = QWidget()
+        self.four_tab = QWidget()
+        self.five_tab = QWidget()
+        self.six_tab = QWidget()
+        self.tabs.addTab(self.one_tab, 'Extensive')
+        self.tabs.addTab(self.two_tab, 'Intensive')
+        self.tabs.addTab(self.three_tab, 'Concepts')
+        self.tabs.addTab(self.four_tab, 'Theories')
+        self.tabs.addTab(self.five_tab, 'Methods')
+        self.tabs.addTab(self.six_tab, 'Tools')
+
+        self.ext_r()
+        self.int_r()
+        self.concep()
+        self.theors()
+        self.meths()
+        self.toolkit()
+
+        self.wings_h_box = QVBoxLayout()
+        self.wings_h_box.setContentsMargins(0, 0, 0, 0)
+        self.wings_h_box.addWidget(self.upper1)
+        self.wings_h_box.addWidget(self.widget0)
+        self.wings_h_box.addWidget(self.tabs)
+        self.description_box.setLayout(self.wings_h_box)
+
+        self.main2 = QTabWidget()
+        self.sub1_tab = QWidget()
+        self.sub2_tab = QWidget()
+        self.sub3_tab = QWidget()
+        self.sub4_tab = QWidget()
+        self.main2.addTab(self.sub1_tab, 'Articles')
+        self.main2.addTab(self.sub2_tab, 'Concepts')
+        self.main2.addTab(self.sub3_tab, 'Theories')
+        self.main2.addTab(self.sub4_tab, 'Methods')
+
+        self.sub1()
+        self.sub2()
+        self.sub3()
+        self.sub4()
+
+        self.main3 = QTabWidget()
+        self.real_tab1 = QWidget()
+        self.main3.addTab(self.real_tab1, 'Realtime Markdown')
+        self.ret1()
+        self.main3.setVisible(False)
+
+        self.page2_box_h = QHBoxLayout()
+        self.page2_box_h.addWidget(self.description_box, 1)
+        self.page2_box_h.addWidget(self.main2, 1)
+        self.page2_box_h.addWidget(self.main3, 1)
+        self.art_tab.setLayout(self.page2_box_h)
+
+    def ret1(self):
+        self.real1 = QTextEdit(self)
+        self.real1.setReadOnly(True)
+        btn_sub1 = QPushButton('Close realtime window', self)
+        btn_sub1.clicked.connect(self.close_re)
+        btn_sub1.setMaximumHeight(20)
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.real1)
+        page3_box_h.addWidget(btn_sub1)
+        self.real_tab1.setLayout(page3_box_h)
+
+    def ret2(self):
+        self.real2 = QTextEdit(self)
+        self.real2.setReadOnly(True)
+        btn_sub1 = QPushButton('Close realtime window', self)
+        btn_sub1.clicked.connect(self.close_re)
+        btn_sub1.setMaximumHeight(20)
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.real2)
+        page3_box_h.addWidget(btn_sub1)
+        self.real_tab2.setLayout(page3_box_h)
+
+    def index_changed(self, i):
+        if i == 0 and self.le1.text() != '':
+            with open('path_rst.txt', 'w', encoding='utf-8') as f0:
+                f0.write('')
+        if i != 0 and self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname1 = str(self.le1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+            if i <= self.widget0.count() - 1:
+                tarnum = int(self.widget0.currentIndex() + 1)
+                searcde = str(self.widget0.itemText(tarnum))
+                searcde = searcde.replace('After ', '').replace('[', '\[').replace(']', '\]')
+                sst = re.search(r'#(.*?)' + searcde + '[\s\S]*', maintxt)
+                if sst != None:
+                    with open('path_rst.txt', 'w', encoding='utf-8') as f0:
+                        f0.write(sst.group())
+            if i == self.widget0.count() - 1:
+                with open('path_rst.txt', 'w', encoding='utf-8') as f0:
+                    f0.write('')
+
+    def inspiTab(self):
+        t1 = QWidget()
+        lbl1 = QLabel('Title:', self)
+        self.leii1 = QLineEdit(self)
+        self.leii1.setPlaceholderText('Enter your text')
+        self.btn_a = QPushButton('Create', self)
+        self.btn_a.clicked.connect(self.createscr)
+        self.btn_a.setMaximumHeight(20)
+        b1 = QHBoxLayout()
+        b1.setContentsMargins(0, 0, 0, 0)
+        b1.addWidget(lbl1)
+        b1.addWidget(self.leii1, 2)
+        b1.addWidget(self.btn_a, 1)
+        t1.setLayout(b1)
+
+        self.choosepart = QComboBox(self)
+        self.choosepart.setCurrentIndex(0)
+        self.choosepart.currentIndexChanged.connect(self.chooseind)
+        defalist = ['Append at the end (default)']
+        if self.leii1.text() != '':
+            pathscr = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            tarname1 = str(self.leii1.text()) + ".md"
+            fulldir1 = os.path.join(pathscr, tarname1)
+            maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+            pattern = re.compile(r'## (.*?)\n')
+            result = pattern.findall(maintxt)
+            result = '☆'.join(result)
+            if result != '':
+                result = result.replace('#', '')
+                result = result.replace('# ', '')
+                result = result.replace('Q/P: ', '')
+                result = result.split('☆')
+                if 'References ' in result:
+                    result.remove('References ')
+                for i in range(len(result)):
+                    result[i] = 'After ' + result[i]
+                    result[i] = ''.join(result[i])
+                defalist = defalist + result
+        self.choosepart.addItems(defalist)
+
+        self.widgettem = QComboBox(self)
+        self.widgettem.setCurrentIndex(0)
+        defalist = ['ElegentPaper_Chinese (default)', 'ElegentPaper_English',
+                    'ElegentNote_Chinese', 'ElegentNote_English', 'IEEE Conference_English',
+                    'JournalPaper_Chinese', 'Beamer_Chinese', 'TexpadTexGeneral_Chinese']
+        self.widgettem.addItems(defalist)
+
+        t1_5 = QWidget()
+        self.leii2 = QLineEdit(self)
+        self.leii2.setPlaceholderText('Number (blank = auto mode)')
+        btn_ia = QPushButton('Insert citation', self)
+        btn_ia.clicked.connect(self.addcit)
+        btn_ia.setMaximumHeight(20)
+        sm = QHBoxLayout()
+        sm.setContentsMargins(0, 0, 0, 0)
+        sm.addWidget(self.leii2, 1)
+        sm.addWidget(btn_ia, 1)
+        t1_5.setLayout(sm)
+
+        t1_6 = QWidget()
+        self.leii3 = QLineEdit(self)
+        self.leii3.setPlaceholderText('Row')
+        lbl1 = QLabel('×', self)
+        self.leii4 = QLineEdit(self)
+        self.leii4.setPlaceholderText('Column')
+        sm2 = QHBoxLayout()
+        sm2.setContentsMargins(0, 0, 0, 0)
+        sm2.addWidget(self.leii3, 1)
+        sm2.addWidget(lbl1)
+        sm2.addWidget(self.leii4, 1)
+        t1_6.setLayout(sm2)
+
+        t1_7 = QWidget() # 嵌套了上一组
+        btn_ib = QPushButton('Insert table', self)
+        btn_ib.clicked.connect(self.addtable)
+        btn_ib.setMaximumHeight(20)
+        sm3 = QHBoxLayout()
+        sm3.setContentsMargins(0, 0, 0, 0)
+        sm3.addWidget(t1_6, 1)
+        sm3.addWidget(btn_ib, 1)
+        t1_7.setLayout(sm3)
+
+        t1_8 = QWidget()
+        self.leii5 = QLineEdit(self)
+        self.leii5.setPlaceholderText('Caption (blank = auto mode)')
+        btn_ic = QPushButton('Insert image', self)
+        btn_ic.clicked.connect(self.addimage)
+        btn_ic.setMaximumHeight(20)
+        sm4 = QHBoxLayout()
+        sm4.setContentsMargins(0, 0, 0, 0)
+        sm4.addWidget(self.leii5, 1)
+        sm4.addWidget(btn_ic, 1)
+        t1_8.setLayout(sm4)
+
+        t2_5 = QWidget()
+        btn_ia1 = QPushButton('Open a script', self)
+        btn_ia1.clicked.connect(self.openascr)
+        btn_ia1.setMaximumHeight(20)
+        btn_ib1 = QPushButton('Close current file', self)
+        btn_ib1.clicked.connect(self.clinp)
+        btn_ib1.setMaximumHeight(20)
+        sm0 = QHBoxLayout()
+        sm0.setContentsMargins(0, 0, 0, 0)
+        sm0.addWidget(btn_ia1, 1)
+        sm0.addWidget(btn_ib1, 1)
+        t2_5.setLayout(sm0)
+
+        t3 = QWidget()
+        btn_i1 = QPushButton('Add and clear', self)
+        btn_i1.clicked.connect(self.addinssc)
+        btn_i1.setMaximumHeight(20)
+        btn_i1.setShortcut("Ctrl+Return")
+        sm1 = QHBoxLayout()
+        sm1.setContentsMargins(0, 0, 0, 0)
+        sm1.addWidget(btn_i1)
+        t3.setLayout(sm1)
+
+        self.t2 = QWidget()
+        self.textii1 = QPlainTextEdit(self)
+        self.textii1.setReadOnly(False)
+        self.textii1.setObjectName('edit')
+        b2 = QVBoxLayout()
+        b2.setContentsMargins(0, 0, 0, 0)
+        b2.addWidget(t1)
+        b2.addWidget(self.choosepart)
+        b2.addWidget(self.textii1)
+        b2.addWidget(t3)
+        b2.addWidget(self.widgettem)
+        b2.addWidget(t1_5)
+        b2.addWidget(t1_7)
+        b2.addWidget(t1_8)
+        b2.addWidget(t2_5)
+        self.t2.setLayout(b2)
+
+        self.mainii2 = QTabWidget()
+        self.ii1_tab = QWidget()
+        self.ii2_tab = QWidget()
+        self.mainii2.addTab(self.ii1_tab, 'Markdown')
+        self.mainii2.addTab(self.ii2_tab, 'LaTeX')
+        self.inps1()
+        self.inps2()
+
+        self.mainii3 = QTabWidget()
+        self.real_tab2 = QWidget()
+        self.mainii3.addTab(self.real_tab2, 'Realtime Markdown')
+        self.ret2()
+        self.mainii3.setVisible(False)
+
+        self.page3_v_box = QHBoxLayout()
+        self.page3_v_box.addWidget(self.t2, 1)
+        self.page3_v_box.addWidget(self.mainii2, 1)
+        self.page3_v_box.addWidget(self.mainii3, 1)
+        self.insp_tab.setLayout(self.page3_v_box)
+
+    def chooseind(self, i):
+        if i == 0 and self.leii1.text() != '':
+            with open('path_pat.txt', 'w', encoding='utf-8') as f0:
+                f0.write('')
+        if i != 0 and self.leii1.text() != '':
+            path1 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            tarname1 = str(self.leii1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+            if i <= self.choosepart.count() - 1:
+                tarnum = int(self.choosepart.currentIndex() + 1)
+                searcde = str(self.choosepart.itemText(tarnum))
+                searcde = searcde.replace('After ', '').replace('[', '\[').replace(']', '\]')
+                sst = re.search(r'#(.*?)' + searcde + '[\s\S]*', maintxt)
+                if sst != None:
+                    with open('path_pat.txt', 'w', encoding='utf-8') as f0:
+                        f0.write(sst.group())
+            if i == self.choosepart.count() - 1:
+                with open('path_pat.txt', 'w', encoding='utf-8') as f0:
+                    f0.write('')
+
+    def inps1(self):
+        self.textii2 = QTextEdit(self)
+        self.textii2.setReadOnly(False)
+        self.textii2.textChanged.connect(self.on_text2_textChanged)
+        self.scrollbar2 = self.textii2.verticalScrollBar()
+        self.scrollbar2.valueChanged.connect(self.scr_cha2)
+
+        tvt1 = QWidget()
+        self.btn_insia = QPushButton('Insert citation', self)
+        self.btn_insia.clicked.connect(self.addcit)
+        self.btn_insia.setMaximumHeight(20)
+        self.btn_insia.setVisible(False)
+        btn_ins1 = QPushButton('Save edits and generate LaTeX', self)
+        btn_ins1.clicked.connect(self.saveinsp)
+        btn_ins1.setMaximumHeight(20)
+        btn_ins1.setShortcut('Ctrl+s')
+        stvt1 = QHBoxLayout()
+        stvt1.setContentsMargins(0, 4, 0, 0)
+        stvt1.addWidget(self.btn_insia, 1)
+        stvt1.addWidget(btn_ins1, 2)
+        tvt1.setLayout(stvt1)
+
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.textii2)
+        page3_box_h.addWidget(tvt1)
+        self.ii1_tab.setLayout(page3_box_h)
+
+    def inps2(self):
+        self.textii3 = QTextEdit(self)
+        self.textii3.setReadOnly(False)
+        btn_ins2 = QPushButton('Save edits', self)
+        btn_ins2.clicked.connect(self.savelat)
+        btn_ins2.setMaximumHeight(20)
+        btn_ins2.setShortcut('Ctrl+s')
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.textii3)
+        page3_box_h.addWidget(btn_ins2)
+        self.ii2_tab.setLayout(page3_box_h)
+
+    def sub1(self):
+        self.text = QTextEdit(self)
+        self.text.setReadOnly(False)
+        self.text.setMinimumHeight(140)
+        self.text.textChanged.connect(self.on_text_textChanged)
+        self.scrollbar = self.text.verticalScrollBar()
+        self.scrollbar.valueChanged.connect(self.scr_cha)
+        btn_sub1 = QPushButton('Save edits', self)
+        btn_sub1.clicked.connect(self.save1)
+        btn_sub1.setMaximumHeight(20)
+        btn_sub1.setShortcut('Ctrl+s')
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.text)
+        page3_box_h.addWidget(btn_sub1)
+        self.sub1_tab.setLayout(page3_box_h)
+
+    def sub2(self):
+        self.text_s2 = QTextEdit(self)
+        self.text_s2.setReadOnly(False)
+        self.text_s2.setMinimumHeight(140)
+        btn_sub2 = QPushButton('Save edits', self)
+        btn_sub2.clicked.connect(self.save2)
+        btn_sub2.setMaximumHeight(20)
+        btn_sub2.setShortcut('Ctrl+s')
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.text_s2)
+        page3_box_h.addWidget(btn_sub2)
+        self.sub2_tab.setLayout(page3_box_h)
+
+    def sub3(self):
+        self.text_s3 = QTextEdit(self)
+        self.text_s3.setReadOnly(False)
+        self.text_s3.setMinimumHeight(140)
+        btn_sub3 = QPushButton('Save edits', self)
+        btn_sub3.clicked.connect(self.save3)
+        btn_sub3.setMaximumHeight(20)
+        btn_sub3.setShortcut('Ctrl+s')
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.text_s3)
+        page3_box_h.addWidget(btn_sub3)
+        self.sub3_tab.setLayout(page3_box_h)
+
+    def sub4(self):
+        self.text_s4 = QTextEdit(self)
+        self.text_s4.setReadOnly(False)
+        self.text_s4.setMinimumHeight(140)
+        btn_sub4 = QPushButton('Save edits', self)
+        btn_sub4.clicked.connect(self.save4)
+        btn_sub4.setMaximumHeight(20)
+        btn_sub4.setShortcut('Ctrl+s')
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.text_s4)
+        page3_box_h.addWidget(btn_sub4)
+        self.sub4_tab.setLayout(page3_box_h)
+
+    def ext_r(self):
+        self.text11 = QPlainTextEdit(self)
+        self.text11.setReadOnly(False)
+        self.text11.setObjectName("edit")
+        self.text11.setPlaceholderText('Problems / questions')
+        sl1 = QWidget()
+        self.btn_ex11 = QPushButton('Add', self)
+        self.btn_ex11.clicked.connect(self.addprob)
+        self.btn_ex11.setMaximumHeight(20)
+        btn_111 = QPushButton('Clear', self)
+        btn_111.clicked.connect(self.clearpro)
+        btn_111.setMaximumHeight(20)
+        sm1 = QHBoxLayout()
+        sm1.setContentsMargins(0, 0, 0, 0)
+        sm1.addWidget(self.btn_ex11)
+        sm1.addWidget(btn_111)
+        sl1.setLayout(sm1)
+
+        self.text12 = QPlainTextEdit(self)
+        self.text12.setReadOnly(False)
+        self.text12.setObjectName("edit")
+        self.text12.setPlaceholderText('Claims')
+        sl2 = QWidget()
+        self.btn_cl12 = QPushButton('Add', self)
+        self.btn_cl12.clicked.connect(self.addcla)
+        self.btn_cl12.setMaximumHeight(20)
+        btn_121 = QPushButton('Clear', self)
+        btn_121.clicked.connect(self.clearcla)
+        btn_121.setMaximumHeight(20)
+        sm2 = QHBoxLayout()
+        sm2.setContentsMargins(0, 0, 0, 0)
+        sm2.addWidget(self.btn_cl12)
+        sm2.addWidget(btn_121)
+        sl2.setLayout(sm2)
+
+        self.text13 = QPlainTextEdit(self)
+        self.text13.setReadOnly(False)
+        self.text13.setObjectName("edit")
+        self.text13.setPlaceholderText('Analysis')
+        sl3 = QWidget()
+        self.btn_ana13 = QPushButton('Add', self)
+        self.btn_ana13.clicked.connect(self.addana)
+        self.btn_ana13.setMaximumHeight(20)
+        btn_131 = QPushButton('Clear', self)
+        btn_131.clicked.connect(self.clearana)
+        btn_131.setMaximumHeight(20)
+        sm3 = QHBoxLayout()
+        sm3.setContentsMargins(0, 0, 0, 0)
+        sm3.addWidget(self.btn_ana13)
+        sm3.addWidget(btn_131)
+        sl3.setLayout(sm3)
+
+        self.text14 = QPlainTextEdit(self)
+        self.text14.setReadOnly(False)
+        self.text14.setObjectName("edit")
+        self.text14.setPlaceholderText('My views')
+        sl4 = QWidget()
+        btn_14 = QPushButton('Add and clear', self)
+        btn_14.clicked.connect(self.addmy)
+        btn_14.setMaximumHeight(20)
+        btn_14.setShortcut("Ctrl+Return")
+        '''btn_141 = QPushButton('Clear', self)
+        btn_141.clicked.connect(self.clearmy)
+        btn_141.setMaximumHeight(20)'''
+        sm4 = QHBoxLayout()
+        sm4.setContentsMargins(0, 0, 0, 0)
+        sm4.addWidget(btn_14)
+        # sm4.addWidget(btn_141)
+        sl4.setLayout(sm4)
+
+        page3_box_h = QVBoxLayout()
+        page3_box_h.addWidget(self.text11)
+        page3_box_h.addWidget(sl1)
+        page3_box_h.addWidget(self.text12)
+        page3_box_h.addWidget(sl2)
+        page3_box_h.addWidget(self.text13)
+        page3_box_h.addWidget(sl3)
+        page3_box_h.addWidget(self.text14)
+        page3_box_h.addWidget(sl4)
+        self.one_tab.setLayout(page3_box_h)
+
+    def int_r(self):
+        top_box = QWidget()
+        self.le20 = QLineEdit(self)
+        self.le20.setPlaceholderText('Part')
+        self.le21 = QLineEdit(self)
+        self.le21.setPlaceholderText('Page')
+        b1 = QHBoxLayout()
+        b1.setContentsMargins(0, 0, 0, 0)
+        b1.addWidget(self.le20)
+        b1.addWidget(self.le21)
+        top_box.setLayout(b1)
+
+        self.text21 = QPlainTextEdit(self)
+        self.text21.setReadOnly(False)
+        self.text21.setObjectName("edit")
+        self.text21.setPlaceholderText('Excerpts')
+        ex1 = QWidget()
+        self.btn_2k1 = QPushButton('Add', self)
+        self.btn_2k1.clicked.connect(self.addexc)
+        self.btn_2k1.setMaximumHeight(20)
+        btn_211 = QPushButton('Clear', self)
+        btn_211.clicked.connect(self.clearexc)
+        btn_211.setMaximumHeight(20)
+        ec1 = QHBoxLayout()
+        ec1.setContentsMargins(0, 0, 0, 0)
+        ec1.addWidget(self.btn_2k1)
+        ec1.addWidget(btn_211)
+        ex1.setLayout(ec1)
+
+        self.text22 = QPlainTextEdit(self)
+        self.text22.setReadOnly(False)
+        self.text22.setObjectName("edit")
+        self.text22.setPlaceholderText('My views')
+        ex2 = QWidget()
+        btn_22 = QPushButton('Add and clear', self)
+        btn_22.clicked.connect(self.addmv)
+        btn_22.setMaximumHeight(20)
+        btn_22.setShortcut("Ctrl+Return")
+        '''btn_221 = QPushButton('Clear', self)
+        btn_221.clicked.connect(self.clearmv)
+        btn_221.setMaximumHeight(20)'''
+        ec2 = QHBoxLayout()
+        ec2.setContentsMargins(0, 0, 0, 0)
+        ec2.addWidget(btn_22)
+        # ec2.addWidget(btn_221)
+        ex2.setLayout(ec2)
+
+        page4_box_h = QVBoxLayout()
+        page4_box_h.addWidget(top_box)
+        page4_box_h.addWidget(self.text21)
+        page4_box_h.addWidget(ex1)
+        page4_box_h.addWidget(self.text22)
+        page4_box_h.addWidget(ex2)
+        self.two_tab.setLayout(page4_box_h)
+
+    def concep(self):
+        self.lec1 = QLineEdit(self)
+        self.lec1.setPlaceholderText('Name of the concept')
+        ex1 = QWidget()
+        self.btn_ce31 = QPushButton('Add', self)
+        self.btn_ce31.clicked.connect(self.addcon)
+        self.btn_ce31.setMaximumHeight(20)
+        btn_311 = QPushButton('Clear', self)
+        btn_311.clicked.connect(self.clearnam)
+        btn_311.setMaximumHeight(20)
+        ec1 = QHBoxLayout()
+        ec1.setContentsMargins(0, 0, 0, 0)
+        ec1.addWidget(self.btn_ce31)
+        ec1.addWidget(btn_311)
+        ex1.setLayout(ec1)
+
+        self.lec2 = QLineEdit(self)
+        self.lec2.setPlaceholderText('Perspective')
+        ex2 = QWidget()
+        self.btn_ce32 = QPushButton('Add', self)
+        self.btn_ce32.clicked.connect(self.addpers)
+        self.btn_ce32.setMaximumHeight(20)
+        btn_321 = QPushButton('Clear', self)
+        btn_321.clicked.connect(self.cleanpers)
+        btn_321.setMaximumHeight(20)
+        ec2 = QHBoxLayout()
+        ec2.setContentsMargins(0, 0, 0, 0)
+        ec2.addWidget(self.btn_ce32)
+        ec2.addWidget(btn_321)
+        ex2.setLayout(ec2)
+
+        self.text31 = QPlainTextEdit(self)
+        self.text31.setReadOnly(False)
+        self.text31.setObjectName("edit")
+        self.text31.setPlaceholderText('Explanations')
+        ex3 = QWidget()
+        btn_33 = QPushButton('Add and clear', self)
+        btn_33.clicked.connect(self.addconexp)
+        btn_33.setMaximumHeight(20)
+        '''btn_331 = QPushButton('Clear', self)
+        btn_331.clicked.connect(self.clearconex)
+        btn_331.setMaximumHeight(20)'''
+        ec3 = QHBoxLayout()
+        ec3.setContentsMargins(0, 0, 0, 0)
+        ec3.addWidget(btn_33)
+        # ec3.addWidget(btn_331)
+        ex3.setLayout(ec3)
+
+        df_box = QVBoxLayout()
+        df_box.addWidget(self.lec1)
+        df_box.addWidget(ex1)
+        df_box.addWidget(self.lec2)
+        df_box.addWidget(ex2)
+        df_box.addWidget(self.text31)
+        df_box.addWidget(ex3)
+        self.three_tab.setLayout(df_box)
+
+    def theors(self):
+        self.lec0 = QLineEdit(self)
+        self.lec0.setPlaceholderText('Name of the theory')
+        ex0 = QWidget()
+        self.btn_the30 = QPushButton('Add', self)
+        self.btn_the30.clicked.connect(self.addthero)
+        self.btn_the30.setMaximumHeight(20)
+        btn_300 = QPushButton('Clear', self)
+        btn_300.clicked.connect(self.clthen)
+        btn_300.setMaximumHeight(20)
+        ec0 = QHBoxLayout()
+        ec0.setContentsMargins(0, 0, 0, 0)
+        ec0.addWidget(self.btn_the30)
+        ec0.addWidget(btn_300)
+        ex0.setLayout(ec0)
+
+        tt1 = QWidget()
+        self.text41 = QPlainTextEdit(self)
+        self.text41.setReadOnly(False)
+        self.text41.setObjectName("edit")
+        self.text41.setPlaceholderText('Question preferences')
+        ex1 = QWidget()
+        self.btn_the41 = QPushButton('+', self)
+        self.btn_the41.clicked.connect(self.addpoprefe)
+        self.btn_the41.setMaximumHeight(20)
+        self.btn_the41.setMinimumHeight(20)
+        self.btn_the41.setMinimumWidth(20)
+        btn_411 = QPushButton('-', self)
+        btn_411.clicked.connect(self.clearpropref)
+        btn_411.setMaximumHeight(20)
+        btn_411.setMinimumHeight(20)
+        btn_411.setMinimumWidth(20)
+        ec1 = QVBoxLayout()
+        ec1.setContentsMargins(0, 0, 0, 0)
+        ec1.addWidget(self.btn_the41)
+        ec1.addWidget(btn_411)
+        ex1.setLayout(ec1)
+        btt1 = QHBoxLayout()
+        btt1.setContentsMargins(0, 0, 0, 0)
+        btt1.addWidget(self.text41)
+        btt1.addWidget(ex1)
+        tt1.setLayout(btt1)
+
+        tt2 = QWidget()
+        self.text42 = QPlainTextEdit(self)
+        self.text42.setReadOnly(False)
+        self.text42.setObjectName("edit")
+        self.text42.setPlaceholderText('Method preferences')
+        ex2 = QWidget()
+        self.btn_the42 = QPushButton('+', self)
+        self.btn_the42.clicked.connect(self.addmetpref)
+        self.btn_the42.setMaximumHeight(20)
+        self.btn_the42.setMinimumHeight(20)
+        self.btn_the42.setMinimumWidth(20)
+        btn_421 = QPushButton('-', self)
+        btn_421.clicked.connect(self.clearmedpref)
+        btn_421.setMaximumHeight(20)
+        btn_421.setMinimumHeight(20)
+        btn_421.setMinimumWidth(20)
+        ec2 = QVBoxLayout()
+        ec2.setContentsMargins(0, 0, 0, 0)
+        ec2.addWidget(self.btn_the42)
+        ec2.addWidget(btn_421)
+        ex2.setLayout(ec2)
+        btt2 = QHBoxLayout()
+        btt2.setContentsMargins(0, 0, 0, 0)
+        btt2.addWidget(self.text42)
+        btt2.addWidget(ex2)
+        tt2.setLayout(btt2)
+
+        tt3 = QWidget()
+        self.text43 = QPlainTextEdit(self)
+        self.text43.setReadOnly(False)
+        self.text43.setObjectName("edit")
+        self.text43.setPlaceholderText('Thinking patterns')
+        ex3 = QWidget()
+        self.btn_the43 = QPushButton('+', self)
+        self.btn_the43.clicked.connect(self.thnpatt)
+        self.btn_the43.setMaximumHeight(20)
+        self.btn_the43.setMinimumHeight(20)
+        self.btn_the43.setMinimumWidth(20)
+        btn_431 = QPushButton('-', self)
+        btn_431.clicked.connect(self.clearthnptn)
+        btn_431.setMaximumHeight(20)
+        btn_431.setMinimumHeight(20)
+        btn_431.setMinimumWidth(20)
+        ec3 = QVBoxLayout()
+        ec3.setContentsMargins(0, 0, 0, 0)
+        ec3.addWidget(self.btn_the43)
+        ec3.addWidget(btn_431)
+        ex3.setLayout(ec3)
+        btt3 = QHBoxLayout()
+        btt3.setContentsMargins(0, 0, 0, 0)
+        btt3.addWidget(self.text43)
+        btt3.addWidget(ex3)
+        tt3.setLayout(btt3)
+
+        tt4 = QWidget()
+        self.text44 = QPlainTextEdit(self)
+        self.text44.setReadOnly(False)
+        self.text44.setObjectName("edit")
+        self.text44.setPlaceholderText('Basic views')
+        ex4 = QWidget()
+        self.btn_the44 = QPushButton('+', self)
+        self.btn_the44.clicked.connect(self.thnbasv)
+        self.btn_the44.setMaximumHeight(20)
+        self.btn_the44.setMinimumHeight(20)
+        self.btn_the44.setMinimumWidth(20)
+        btn_441 = QPushButton('-', self)
+        btn_441.clicked.connect(self.clearbscpv)
+        btn_441.setMaximumHeight(20)
+        btn_441.setMinimumHeight(20)
+        btn_441.setMinimumWidth(20)
+        ec4 = QVBoxLayout()
+        ec4.setContentsMargins(0, 0, 0, 0)
+        ec4.addWidget(self.btn_the44)
+        ec4.addWidget(btn_441)
+        ex4.setLayout(ec4)
+        btt4 = QHBoxLayout()
+        btt4.setContentsMargins(0, 0, 0, 0)
+        btt4.addWidget(self.text44)
+        btt4.addWidget(ex4)
+        tt4.setLayout(btt4)
+
+        tt5 = QWidget()
+        self.text45 = QPlainTextEdit(self)
+        self.text45.setReadOnly(False)
+        self.text45.setObjectName("edit")
+        self.text45.setPlaceholderText('Empirical examples')
+        ex5 = QWidget()
+        self.btn_the45 = QPushButton('+', self)
+        self.btn_the45.clicked.connect(self.emexpls)
+        self.btn_the45.setMaximumHeight(20)
+        self.btn_the45.setMinimumHeight(20)
+        self.btn_the45.setMinimumWidth(20)
+        btn_451 = QPushButton('-', self)
+        btn_451.clicked.connect(self.clearemepls)
+        btn_451.setMaximumHeight(20)
+        btn_451.setMinimumHeight(20)
+        btn_451.setMinimumWidth(20)
+        ec5 = QVBoxLayout()
+        ec5.setContentsMargins(0, 0, 0, 0)
+        ec5.addWidget(self.btn_the45)
+        ec5.addWidget(btn_451)
+        ex5.setLayout(ec5)
+        btt5 = QHBoxLayout()
+        btt5.setContentsMargins(0, 0, 0, 0)
+        btt5.addWidget(self.text45)
+        btt5.addWidget(ex5)
+        tt5.setLayout(btt5)
+
+        tt6 = QWidget()
+        self.text46 = QPlainTextEdit(self)
+        self.text46.setReadOnly(False)
+        self.text46.setObjectName("edit")
+        self.text46.setPlaceholderText('Review: pros and cons')
+        ex6 = QWidget()
+        self.btn_the46 = QPushButton('+', self)
+        self.btn_the46.clicked.connect(self.addreviwcmts)
+        self.btn_the46.setMaximumHeight(20)
+        self.btn_the46.setMinimumHeight(20)
+        self.btn_the46.setMinimumWidth(20)
+        btn_461 = QPushButton('-', self)
+        btn_461.clicked.connect(self.clearecmt)
+        btn_461.setMaximumHeight(20)
+        btn_461.setMinimumHeight(20)
+        btn_461.setMinimumWidth(20)
+        ec6 = QVBoxLayout()
+        ec6.setContentsMargins(0, 0, 0, 0)
+        ec6.addWidget(self.btn_the46)
+        ec6.addWidget(btn_461)
+        ex6.setLayout(ec6)
+        btt6 = QHBoxLayout()
+        btt6.setContentsMargins(0, 0, 0, 0)
+        btt6.addWidget(self.text46)
+        btt6.addWidget(ex6)
+        tt6.setLayout(btt6)
+
+        tt7 = QWidget()
+        self.text47 = QPlainTextEdit(self)
+        self.text47.setReadOnly(False)
+        self.text47.setObjectName("edit")
+        self.text47.setPlaceholderText('Evolution and trends')
+        ex7 = QWidget()
+        self.btn_the47 = QPushButton('+', self)
+        self.btn_the47.clicked.connect(self.addevotr)
+        self.btn_the47.setMaximumHeight(20)
+        self.btn_the47.setMinimumHeight(20)
+        self.btn_the47.setMinimumWidth(20)
+        btn_471 = QPushButton('-', self)
+        btn_471.clicked.connect(self.clearevotr)
+        btn_471.setMaximumHeight(20)
+        btn_471.setMinimumHeight(20)
+        btn_471.setMinimumWidth(20)
+        ec7 = QVBoxLayout()
+        ec7.setContentsMargins(0, 0, 0, 0)
+        ec7.addWidget(self.btn_the47)
+        ec7.addWidget(btn_471)
+        ex7.setLayout(ec7)
+        btt7 = QHBoxLayout()
+        btt7.setContentsMargins(0, 0, 0, 0)
+        btt7.addWidget(self.text47)
+        btt7.addWidget(ex7)
+        tt7.setLayout(btt7)
+
+        df_box = QVBoxLayout()
+        df_box.addWidget(self.lec0)
+        df_box.addWidget(ex0)
+        # df_box.addWidget(self.text41)
+        df_box.addWidget(tt1)
+        # df_box.addWidget(self.text42)
+        df_box.addWidget(tt2)
+        # df_box.addWidget(self.text43)
+        df_box.addWidget(tt3)
+        # df_box.addWidget(self.text44)
+        df_box.addWidget(tt4)
+        # df_box.addWidget(self.text45)
+        df_box.addWidget(tt5)
+        # df_box.addWidget(self.text46)
+        df_box.addWidget(tt6)
+        # df_box.addWidget(self.text47)
+        df_box.addWidget(tt7)
+        self.four_tab.setLayout(df_box)
+
+    def meths(self):
+        self.lem1 = QLineEdit(self)
+        self.lem1.setPlaceholderText('Name of the method')
+        ex1 = QWidget()
+        self.btn_51 = QPushButton('Add', self)
+        self.btn_51.clicked.connect(self.addmetds)
+        self.btn_51.setMaximumHeight(20)
+        btn_511 = QPushButton('Clear', self)
+        btn_511.clicked.connect(self.clearmetnm)
+        btn_511.setMaximumHeight(20)
+        ec1 = QHBoxLayout()
+        ec1.setContentsMargins(0, 0, 0, 0)
+        ec1.addWidget(self.btn_51)
+        ec1.addWidget(btn_511)
+        ex1.setLayout(ec1)
+
+        self.lem2 = QLineEdit(self)
+        self.lem2.setPlaceholderText('Needs to be met')
+        ex2 = QWidget()
+        self.btn_52 = QPushButton('Add', self)
+        self.btn_52.clicked.connect(self.addmetneeds)
+        self.btn_52.setMaximumHeight(20)
+        btn_521 = QPushButton('Clear', self)
+        btn_521.clicked.connect(self.clearmetneeds)
+        btn_521.setMaximumHeight(20)
+        ec2 = QHBoxLayout()
+        ec2.setContentsMargins(0, 0, 0, 0)
+        ec2.addWidget(self.btn_52)
+        ec2.addWidget(btn_521)
+        ex2.setLayout(ec2)
+
+        self.text51 = QPlainTextEdit(self)
+        self.text51.setReadOnly(False)
+        self.text51.setObjectName("edit")
+        self.text51.setPlaceholderText('Explanations')
+        ex3 = QWidget()
+        btn_53 = QPushButton('Add and clear', self)
+        btn_53.clicked.connect(self.addmetdets)
+        btn_53.setMaximumHeight(20)
+        '''btn_531 = QPushButton('Clear', self)
+        # btn_211.clicked.connect(self.clearexc)
+        btn_531.setMaximumHeight(20)'''
+        ec3 = QHBoxLayout()
+        ec3.setContentsMargins(0, 0, 0, 0)
+        ec3.addWidget(btn_53)
+        # ec3.addWidget(btn_531)
+        ex3.setLayout(ec3)
+
+        df_box = QVBoxLayout()
+        df_box.addWidget(self.lem1)
+        df_box.addWidget(ex1)
+        df_box.addWidget(self.lem2)
+        df_box.addWidget(ex2)
+        df_box.addWidget(self.text51)
+        df_box.addWidget(ex3)
+        self.five_tab.setLayout(df_box)
+
+    def toolkit(self):
+        lbl0 = QLabel('1. Find and replacement', self)
+        font = PyQt6.QtGui.QFont()
+        font.setFamily("Arial")
+        font.setBold(True)
+        font.setPointSize(15)
+        lbl0.setFont(font)
+
+        t1 = QWidget()
+        lbl1 = QLabel('Use:', self)
+        self.tool1 = QLineEdit(self)
+        self.tool1.setPlaceholderText('Enter your text')
+        b1 = QHBoxLayout()
+        b1.setContentsMargins(0, 0, 0, 0)
+        b1.addWidget(lbl1)
+        b1.addWidget(self.tool1)
+        t1.setLayout(b1)
+
+        t1_5 = QWidget()
+        lbl1_5 = QLabel('To replece:', self)
+        self.tool1_5 = QLineEdit(self)
+        self.tool1_5.setPlaceholderText('Enter your text')
+        b1_5 = QHBoxLayout()
+        b1_5.setContentsMargins(0, 0, 0, 0)
+        b1_5.addWidget(lbl1_5)
+        b1_5.addWidget(self.tool1_5)
+        t1_5.setLayout(b1_5)
+
+        t1_6 = QWidget()
+        btn_t1 = QPushButton('Start!', self)
+        btn_t1.clicked.connect(self.fanrep)
+        btn_t1.setMaximumHeight(20)
+        btn_t1.setMinimumWidth(50)
+        btn_t0 = QPushButton('Not in this article?', self)
+        btn_t0.clicked.connect(self.findandrepopen)
+        btn_t0.setMaximumHeight(20)
+        btn_t0.setMinimumWidth(50)
+        b1_6 = QHBoxLayout()
+        b1_6.setContentsMargins(0, 0, 0, 0)
+        b1_6.addWidget(btn_t1)
+        b1_6.addWidget(btn_t0)
+        t1_6.setLayout(b1_6)
+
+        lbl02 = QLabel('2. Redirect a word', self)
+        lbl02.setFont(font)
+
+        t2 = QWidget()
+        lbl2 = QLabel('Redirect:', self)
+        self.tool2 = QLineEdit(self)
+        self.tool2.setPlaceholderText('Enter your text')
+        b2 = QHBoxLayout()
+        b2.setContentsMargins(0, 0, 0, 0)
+        b2.addWidget(lbl2)
+        b2.addWidget(self.tool2)
+        t2.setLayout(b2)
+
+        t3 = QWidget()
+        lbl3 = QLabel('To:', self)
+        self.tool3 = QLineEdit(self)
+        self.tool3.setPlaceholderText('Enter your text')
+        b3 = QHBoxLayout()
+        b3.setContentsMargins(0, 0, 0, 0)
+        b3.addWidget(lbl3)
+        b3.addWidget(self.tool3)
+        t3.setLayout(b3)
+
+        t3_5 = QWidget()
+        btn_t2 = QPushButton('Redirect!', self)
+        btn_t2.clicked.connect(self.redirtname)
+        btn_t2.setMaximumHeight(20)
+        btn_t2.setMinimumWidth(50)
+        btn_tq = QPushButton('Not in this article?', self)
+        btn_tq.clicked.connect(self.anotred)
+        btn_tq.setMaximumHeight(20)
+        btn_tq.setMinimumWidth(50)
+        b3_5 = QHBoxLayout()
+        b3_5.setContentsMargins(0, 0, 0, 0)
+        b3_5.addWidget(btn_t2)
+        b3_5.addWidget(btn_tq)
+        t3_5.setLayout(b3_5)
+
+        lbl03 = QLabel('3. Article bionic reading', self)
+        lbl03.setFont(font)
+
+        t4 = QWidget()
+        btn_t3 = QPushButton('On!', self)
+        btn_t3.clicked.connect(self.bioarton)
+        btn_t3.setMaximumHeight(20)
+        btn_t3.setMinimumWidth(50)
+        btn_t4 = QPushButton('Off!', self)
+        btn_t4.clicked.connect(self.bioartoff)
+        btn_t4.setMaximumHeight(20)
+        btn_t4.setMinimumWidth(50)
+        b4 = QHBoxLayout()
+        b4.setContentsMargins(0, 0, 0, 0)
+        b4.addWidget(btn_t3)
+        b4.addWidget(btn_t4)
+        t4.setLayout(b4)
+
+        t5 = QWidget()
+        btn_t30 = QPushButton('Another article on', self)
+        btn_t30.clicked.connect(self.anobioon)
+        btn_t30.setMaximumHeight(20)
+        btn_t30.setMinimumWidth(50)
+        btn_t39 = QPushButton('Another article off', self)
+        btn_t39.clicked.connect(self.anobiooff)
+        btn_t39.setMaximumHeight(20)
+        btn_t39.setMinimumWidth(50)
+        b5 = QHBoxLayout()
+        b5.setContentsMargins(0, 0, 0, 0)
+        b5.addWidget(btn_t30)
+        b5.addWidget(btn_t39)
+        t5.setLayout(b5)
+
+        lbl04 = QLabel('4. Extract my views', self)
+        lbl04.setFont(font)
+
+        t6 = QWidget()
+        self.btn_t5 = QPushButton('From', self)
+        self.btn_t5.clicked.connect(self.from_ext)
+        self.btn_t5.setMaximumHeight(20)
+        self.btn_t5.setMinimumWidth(50)
+        self.btn_t6 = QPushButton('To', self)
+        self.btn_t6.clicked.connect(self.to_ext)
+        self.btn_t6.setMaximumHeight(20)
+        self.btn_t6.setMinimumWidth(50)
+        b6 = QHBoxLayout()
+        b6.setContentsMargins(0, 0, 0, 0)
+        b6.addWidget(self.btn_t5)
+        b6.addWidget(self.btn_t6)
+        t6.setLayout(b6)
+
+        btn_t7 = QPushButton('Start!', self)
+        btn_t7.clicked.connect(self.start_ext)
+        btn_t7.setMaximumHeight(20)
+        btn_t7.setMinimumWidth(50)
+
+        lbl05 = QLabel('5. Import citations from RIS files', self)
+        lbl05.setFont(font)
+
+        t7 = QWidget()
+        self.btn_t7 = QPushButton('Open .ris and start!', self)
+        self.btn_t7.clicked.connect(self.openris)
+        self.btn_t7.setMaximumHeight(20)
+        self.btn_t7.setMinimumWidth(50)
+        self.btn_t8 = QPushButton('Move to Articles', self)
+        self.btn_t8.clicked.connect(self.moveris)
+        self.btn_t8.setMaximumHeight(20)
+        self.btn_t8.setMinimumWidth(50)
+        b7 = QHBoxLayout()
+        b7.setContentsMargins(0, 0, 0, 0)
+        b7.addWidget(self.btn_t7)
+        b7.addWidget(self.btn_t8)
+        t7.setLayout(b7)
+
+        self.lbltool06 = QLabel('6. Web & Conference Mode', self)
+        self.lbltool06.setFont(font)
+
+        self.tool8 = QWidget()
+        self.btn_t9 = QPushButton('Turn on!', self)
+        self.btn_t9.clicked.connect(self.webconmode_on)
+        self.btn_t9.setMaximumHeight(20)
+        self.btn_t9.setMinimumWidth(50)
+        self.btn_t10 = QPushButton('Turn off!', self)
+        self.btn_t10.clicked.connect(self.webconmode_off)
+        self.btn_t10.setMaximumHeight(20)
+        self.btn_t10.setMinimumWidth(50)
+        b8 = QHBoxLayout()
+        b8.setContentsMargins(0, 0, 0, 0)
+        b8.addWidget(self.btn_t9)
+        b8.addWidget(self.btn_t10)
+        self.tool8.setLayout(b8)
+
+        df_box = QVBoxLayout()
+        df_box.addStretch()
+        df_box.addWidget(lbl0)
+        # df_box.addWidget(btn_t0)
+        df_box.addWidget(t1)
+        df_box.addWidget(t1_5)
+        df_box.addWidget(t1_6)
+        df_box.addStretch()
+        df_box.addWidget(lbl02)
+        # df_box.addWidget(btn_tq)
+        df_box.addWidget(t2)
+        df_box.addWidget(t3)
+        df_box.addWidget(t3_5)
+        df_box.addStretch()
+        df_box.addWidget(lbl03)
+        # df_box.addWidget(btn_t30)
+        df_box.addWidget(t4)
+        df_box.addWidget(t5)
+        df_box.addStretch()
+        df_box.addWidget(lbl04)
+        df_box.addWidget(t6)
+        df_box.addWidget(btn_t7)
+        df_box.addStretch()
+        df_box.addWidget(lbl05)
+        df_box.addWidget(t7)
+        df_box.addStretch()
+        df_box.addWidget(self.lbltool06)
+        df_box.addWidget(self.tool8)
+        df_box.addStretch()
+        self.six_tab.setLayout(df_box)
+
+    def openextis(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 == '':
+            self.text.setPlainText('Please check your path settings!')
+        if path1 != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Open File", path1, "Markdown Files (*.md)")
+            if file_name != '':
+                if path1 in file_name:
+                    contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+
+                    pattern = re.compile(r'Title: (.*?)\n')
+                    result = pattern.findall(contend)
+                    result = ''.join(result)
+                    pretc = result.replace('Title: ', '')
+                    pretc = pretc.replace('\n', '')
+                    pretc = pretc.replace('[', '')
+                    pretc = pretc.replace(']', '')
+                    if '|' in pretc:
+                        pass
+                        patt = re.compile(r'\|(.*?)\]')
+                        res2 = patt.findall(result)
+                        res2 = ''.join(res2)
+                        self.le1.setText(res2)
+                    else:
+                        self.le1.setText(pretc)
+
+                    pattern2 = re.compile(r'Authors: (.*?)\n')
+                    result2 = pattern2.findall(contend)
+                    result2 = ''.join(result2)
+                    pretc2 = result2.replace('Authors: ', '')
+                    pretc2 = pretc2.replace('\n', '')
+                    pretc2 = pretc2.replace('[', '')
+                    pretc2 = pretc2.replace(']', '')
+                    self.le2.setText(pretc2)
+
+                    pattern3 = re.compile(r'Institutes: (.*?)\n')
+                    result3 = pattern3.findall(contend)
+                    result3 = ''.join(result3)
+                    pretc3 = result3.replace('Institutes: ', '')
+                    pretc3 = pretc3.replace('\n', '')
+                    pretc3 = pretc3.replace('[', '')
+                    pretc3 = pretc3.replace(']', '')
+                    self.le7.setText(pretc3)
+
+                    pattern4 = re.compile(r'Publication: (.*?)\n')
+                    result4 = pattern4.findall(contend)
+                    result4 = ''.join(result4)
+                    pretc4 = result4.replace('Publication: ', '')
+                    pretc4 = pretc4.replace('\n', '')
+                    pretc4 = pretc4.replace('[', '')
+                    pretc4 = pretc4.replace(']', '')
+                    self.le3.setText(pretc4)
+
+                    pattern5 = re.compile(r'Press: (.*?)\n')
+                    result5 = pattern5.findall(contend)
+                    result5 = ''.join(result5)
+                    pretc5 = result5.replace('Press: ', '')
+                    pretc5 = pretc5.replace('\n', '')
+                    pretc5 = pretc5.replace('[', '')
+                    pretc5 = pretc5.replace(']', '')
+                    self.le3_1.setText(pretc5)
+
+                    pattern6 = re.compile(r'Year: (.*?)\n')
+                    result6 = pattern6.findall(contend)
+                    result6 = ''.join(result6)
+                    pretc6 = result6.replace('Year: ', '')
+                    pretc6 = pretc6.replace('\n', '')
+                    pretc6 = pretc6.replace('#AD', '')
+                    self.le4.setText(pretc6)
+
+                    pattern7 = re.compile(r'Vol / Mon: (.*?)\n')
+                    result7 = pattern7.findall(contend)
+                    result7 = ''.join(result7)
+                    pretc7 = result7.replace('Vol / Mon: ', '')
+                    pretc7 = pretc7.replace('\n', '')
+                    self.le4_1.setText(pretc7)
+
+                    pattern8 = re.compile(r'Tags: (.*?)\n')
+                    result8 = pattern8.findall(contend)
+                    result8 = ''.join(result8)
+                    pretc8 = result8.replace('Tags: ', '')
+                    pretc8 = pretc8.replace('\n', '')
+                    pretc8 = pretc8.replace('#', '')
+                    pretc8 = pretc8.replace(' ', '、')
+                    pretc8 = pretc8.replace('[', '')
+                    pretc8 = pretc8.replace(']', '')
+                    self.le5.setText(pretc8)
+
+                    pattern9 = re.compile(r'From book: (.*?),')
+                    result9 = pattern9.findall(contend)
+                    result9 = ''.join(result9)
+                    pretc9 = result9.replace('From book: ', '')
+                    pretc9 = pretc9.replace(',', '')
+                    pretc9 = pretc9.replace('[', '')
+                    pretc9 = pretc9.replace(']', '')
+                    self.le8.setText(pretc9)
+
+                    pattern10 = re.compile(r', Chapter (.*?),')
+                    result10 = pattern10.findall(contend)
+                    result10 = ''.join(result10)
+                    pretc10 = result10.replace(', Chapter ', '')
+                    pretc10 = pretc10.replace(',', '')
+                    pretc10 = pretc10.replace('[', '')
+                    pretc10 = pretc10.replace(']', '')
+                    self.le9.setText(pretc10)
+
+                    pattern11 = re.compile(r', Page range: (.*?)\n')
+                    result11 = pattern11.findall(contend)
+                    result11 = ''.join(result11)
+                    pretc11 = result11.replace(', Page range: ', '')
+                    pretc11 = pretc11.replace('\n', '')
+                    self.le10.setText(pretc11)
+
+                    if self.le1.text() != '':
+                        self.text.setPlainText(contend)
+                        self.le1.setEnabled(False)
+                        self.btnmain2.setStyleSheet('''
+                                border: 1px outset grey;
+                                background-color: #0085FF;
+                                border-radius: 4px;
+                                padding: 1px;
+                                color: #FFFFFF''')
+                        self.btnmain2.setText('Added')
+
+                        self.widget0.clear()
+                        self.widget0.addItems(['Append at the end (default)'])
+                        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+                        tarname1 = str(self.le1.text()) + ".md"
+                        fulldir1 = os.path.join(path1, tarname1)
+                        maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                        pattern = re.compile(r'## (.*?)\n')
+                        result = pattern.findall(maintxt)
+                        result = '☆'.join(result)
+                        result = result.replace('#', '')
+                        result = result.replace('# ', '')
+                        result = result.replace('Q/P: ', '')
+                        result = result.split('☆')
+                        for i in range(len(result)):
+                            result[i] = 'After ' + result[i]
+                            result[i] = ''.join(result[i])
+                        self.widget0.addItems(result)
+
+                        with open('path_ttl.txt', 'w', encoding='utf-8') as f0:
+                            f0.write(pretc)
+
+                    self.read_t1.setVisible(False)
+                    self.read_t2.setVisible(False)
+                    self.read_t7.setVisible(False)
+                    self.read_t3.setVisible(False)
+                    self.read_t8.setVisible(False)
+                    self.read_t4.setVisible(False)
+                    self.read_t5.setVisible(False)
+                    self.lbltool06.setVisible(False)
+                    self.tool8.setVisible(False)
+                    self.btnx4.setText('🔽')
+                    if self.btn_t9.text() == 'Turned on!':
+                        self.web_t3.setVisible(False)
+                        self.web_t8.setVisible(False)
+
+                    if self.le1.text() == '':
+                        self.text.setPlainText('It is not a standard file for article.')
+                if path1 not in file_name:
+                    self.text.setPlainText('This file is not under the target folder.')
+
+    def cleaninput(self, a):
+        a = a.replace('\n', ' ')
+        a = a.replace('\r', ' ')
+        a = a.replace('/', ' ')
+        a = a.replace(':', '').replace(':', ' ')
+        a = a.replace('-', ' ')
+        a = a.replace('[', '')
+        a = a.replace(']', '')
+        a = a.replace('   ', ' ')
+        a = a.replace('  ', ' ')
+        a = a.lstrip(' ').rstrip(' ')
+        return a
+
+    def addmain(self):
+        if self.btnmain2.text() != 'Added' and self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                self.le1.setText(self.cleaninput(str(self.le1.text())))
+                self.le2.setText(self.cleaninput(str(self.le2.text())))
+                self.le7.setText(self.cleaninput(str(self.le7.text())))
+                self.le3.setText(self.cleaninput(str(self.le3.text())))
+                self.le3_1.setText(self.cleaninput(str(self.le3_1.text())))
+                self.le4.setText(self.cleaninput(str(self.le4.text())))
+                self.le4_1.setText(self.cleaninput(str(self.le4_1.text())))
+                self.le5.setText(self.cleaninput(str(self.le5.text())))
+                self.le8.setText(self.cleaninput(str(self.le8.text())))
+                self.le9.setText(self.cleaninput(str(self.le9.text())))
+                #self.le10.setText(self.cleaninput(str(self.le10.text())))
+
+                tarname1 = str(self.le1.text())+".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                part1 = '# Metadata'
+                part2 = '\n- ' + 'Title: ' + str(self.le1.text())
+                part3 = ''
+                if '%' not in self.le2.text():
+                    part3 = '\n- ' + 'Authors: ' + str(self.le2.text())
+                if '%' in self.le2.text():
+                    p3end = str(self.le2.text()).replace('%', '(translator)')
+                    part3 = '\n- ' + 'Authors: ' + p3end
+
+                part4 = ''
+                if self.le7.text() != '':
+                    part4 = '\n- ' + 'Institutes: ' + str(self.le7.text())
+
+                part5 = ''
+                if self.le3.text() != '':
+                    part5 = '\n- ' + 'Publication: ' + str(self.le3.text())
+
+                part5_1 = ''
+                if self.le3_1.text() != '':
+                    part5_1 = '\n- ' + 'Press: ' + str(self.le3_1.text())
+
+                part5_5 = ''
+                if not self.web_t3.isVisible():
+                    if str(self.le8.text()) == '' or str(self.le9.text()) == '':
+                        part5_5 = '\n- ' + 'Page range: ' + str(self.le10.text())
+                    if str(self.le8.text()) != '' and str(self.le9.text()) != '' and self.le10.text() != '':
+                        part5_5 = '\n- ' + 'From book: ' + str(self.le8.text()) + ', Chapter ' + str(
+                            self.le9.text()) + ', Page range: ' + str(self.le10.text())
+
+                part6 = '\n- ' + 'Year: ' + '#AD' + str(self.le4.text())
+                part6_5 = ''
+                if self.le4_1.text() != '':
+                    part6_5 = '\n- ' + 'Vol / Mon: ' + str(self.le4_1.text())
+
+                part7 = ''
+                if self.le5.text() != '':
+                    exptag = str(self.le5.text())
+                    listtag = exptag.split('、')
+                    i = 0
+                    while i >= 0 and i <= len(listtag) - 1:
+                        listtag[i] = '#' + str(listtag[i]) + ' '
+                        listtag[i] = ''.join(listtag[i])
+                        i += 1
+                        continue
+                    endtag = ''.join(listtag)
+                    part7 = '\n- ' + 'Tags: ' + str(endtag)
+
+                part7_5 = ''
+                def is_contain_english(str0):  # 判断是否包含英文字母
+                    import re
+                    return bool(re.search('[a-zA-Za-zA-Z]', str0))
+
+                def is_contain_chinese(check_str):  # 判断是否包含中文字
+                    for ch in check_str:
+                        if u'\u4e00' <= ch <= u'\u9fff':
+                            return True
+                    return False
+
+                if is_contain_chinese(str(self.le1.text())) or is_contain_chinese(str(self.le3.text())) or is_contain_chinese(str(self.le8.text())):
+                    if not self.web_t3.isVisible():
+                        if '%' not in self.le2.text():
+                            if self.le3.text() != '':
+                                part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()) + ':《' + str(self.le1.text()) + '》,载《' + \
+                                    str(self.le3.text()) + '》,' + str(self.le4.text()) + ' 年第 ' + \
+                                    str(self.le4_1.text()) + ' 期,第 ' + str(self.le10.text()) + ' 页。'
+                            if self.le3.text() == '' and self.le8.text() != '':
+                                part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()) + ':《' + \
+                                          str(self.le8.text()) + '》,' + str(self.le3_1.text()) + ',' + str(self.le4.text()) + ' 年 ' + \
+                                          str(self.le4_1.text()) + ' 月版,第 ' + str(self.le10.text()) + ' 页。'
+                        if '%' in self.le2.text():
+                            zove = str(self.le2.text()).split('、')
+                            for i in range(len(zove)):
+                                if '%' in zove[i]:
+                                    zove[i] = zove[i].replace('%', '译')
+                                    i = i + 1
+                                    continue
+                                if '%' not in zove[i]:
+                                    zove[i] = zove[i] + '著'
+                                    zove[i] = ''.join(zove[i])
+                                    i = i + 1
+                                    continue
+                            zoveend = ','.join(zove)
+                            zoveend = zoveend.replace('译,', '、')
+                            if self.le3.text() != '':
+                                part7_5 = '\n- ' + 'Citation: ' + zoveend + ':《' + str(self.le1.text()) + '》,载《' + \
+                                    str(self.le3.text()) + '》,' + str(self.le4.text()) + ' 年第 ' + \
+                                    str(self.le4_1.text()) + ' 期,第 ' + str(self.le10.text()) + ' 页。'
+                            if self.le3.text() == '' and self.le8.text() != '':
+                                part7_5 = '\n- ' + 'Citation: ' + zoveend + ':《' + \
+                                          str(self.le8.text()) + '》,' + str(self.le3_1.text()) + ',' + str(self.le4.text()) + ' 年 ' + \
+                                          str(self.le4_1.text()) + ' 月版,第 ' + str(self.le10.text()) + ' 页。'
+                    if self.web_t3.isVisible():
+                        ISOTIMEFORMAT = '%Y 年 %m 月 %d 日'
+                        theTime = datetime.datetime.now().strftime(ISOTIMEFORMAT)
+                        if '%' not in self.le2.text():
+                            if self.leweb3.text() != '':
+                                part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()) + ':《' + str(
+                                self.le1.text()) + '》,' + str(self.leweb3.text()) + ',访问时间:' + theTime + ' 。'
+                            if self.leweb3.text() == '':
+                                part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()) + ':《' + str(
+                                    self.le1.text()) + '》,提交给“' + str(self.leweb8.text()) + '”的论文,' + str(self.leweb10.text()) + ',' + str(self.leweb9.text()) + ',' + str(self.le4.text()) + ' 年 ' + \
+                                          str(self.le4_1.text()) + ' 月。'
+                        if '%' in self.le2.text():
+                            zove = str(self.le2.text()).split('、')
+                            for i in range(len(zove)):
+                                if '%' in zove[i]:
+                                    zove[i] = zove[i].replace('%', '译')
+                                    i = i + 1
+                                    continue
+                                if '%' not in zove[i]:
+                                    zove[i] = zove[i] + '著'
+                                    zove[i] = ''.join(zove[i])
+                                    i = i + 1
+                                    continue
+                            zoveend = ','.join(zove)
+                            zoveend = zoveend.replace('译,', '、')
+                            if self.leweb3.text() != '':
+                                part7_5 = '\n- ' + 'Citation: ' + zoveend + ':《' + str(self.le1.text()) + '》,' + \
+                                      str(self.leweb3.text()) + ',访问时间:' + theTime + ' 。'
+                            if self.leweb3.text() == '':
+                                part7_5 = '\n- ' + 'Citation: ' + zoveend + ':《' + str(
+                                    self.le1.text()) + '》,提交给“' + str(self.leweb8.text()) + '”的论文,' + str(self.leweb10.text()) + ',' + str(self.leweb9.text()) + ',' + str(self.le4.text()) + ' 年 ' + \
+                                          str(self.le4_1.text()) + ' 月。'
+                if is_contain_english(str(self.le1.text())) and not is_contain_chinese(str(self.le1.text())):
+                    if not self.web_t3.isVisible():
+                        if self.le3.text() != '':
+                            part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()).replace('、', ', ') + ', “' + str(self.le1.text()) + ',” *' + \
+                                str(self.le3.text()) + '*, ' + str(self.le4_1.text()) + ', ' + str(self.le4.text()) + ', pp.' + \
+                                str(self.le10.text()) + '.'
+                        if self.le3.text() == '' and self.le8.text() != '':
+                            part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()).replace('、', ', ') + ', ' + \
+                                      str(self.le8.text()) + ', ' + str(self.le3_1.text()) + ', ' + str(self.le4.text()) + ', pp. ' + \
+                                      str(self.le10.text()) + '.'
+                    if self.web_t3.isVisible():
+                        ISOTIMEFORMAT = '%B %d, %Y'
+                        theTime = datetime.datetime.now().strftime(ISOTIMEFORMAT)
+                        if self.leweb3.text() != '':
+                            part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()).replace('、', ', ') + ', “' + str(self.le1.text()) + ',” retrieved ' + \
+                            theTime + ', from ' + str(self.leweb3.text())
+                        if self.leweb3.text() == '':
+                            part7_5 = '\n- ' + 'Citation: ' + str(self.le2.text()).replace('、', ', ') + ', “' + str(self.le1.text()) + ',” paper delivered to ' + \
+                                str(self.leweb8.text()) + ', sponsored by ' + str(self.leweb9.text()) + ', ' + str(self.leweb10.text()) + ', ' + str(self.le4_1.text()) + ', ' + str(self.le4.text()) + '.'
+
+                part8 = '\n\n---' + '\n\n# Notes'
+
+                with open(fulldir1, 'a', encoding='utf-8') as f1:
+                    f1.write(part1+part2+part3+part4+part5+part5_1+part5_5+part6+part6_5+part7+part7_5+part8)
+                with open('path_ttl.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(self.le1.text())
+
+            path2 = codecs.open('path_aut.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                if self.le2.text() != '':
+                    expname2 = str(self.le2.text())
+                    listexpn2 = expname2.split('、')
+                    i = 0
+                    while i >= 0 and i <= len(listexpn2) - 1:
+                        if '%' not in listexpn2[i]:
+                            tarname2 = str(listexpn2[i]) + ".md"
+                            fulldir2 = os.path.join(path2, tarname2)
+                            with open(fulldir2, 'a', encoding='utf-8') as f0:
+                                f0.write('')
+                            contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                            if contm != '':
+                                part22 = '\n- ' + 'Article: ' + str(self.le1.text())
+                                part23 = ''
+                                if self.le3.text() != '':
+                                    part23 = '【' + 'Publication: ' + str(self.le3.text()) + '】'
+                                part24 = ''
+                                if self.le8.text() != '':
+                                    part24 = '【' + 'Book: ' + str(self.le8.text()) + '】'
+                                with open(fulldir2, 'a', encoding='utf-8') as f2:
+                                    f2.write(part22 + part23 + part24)
+                                i = i + 1
+                                continue
+                            if contm == '':
+                                part22 = '- ' + 'Article: ' + str(self.le1.text())
+                                part23 = ''
+                                if self.le3.text() != '':
+                                    part23 = '【' + 'Publication: ' + str(self.le3.text()) + '】'
+                                part24 = ''
+                                if self.le8.text() != '':
+                                    part24 = '【' + 'Book: ' + str(self.le8.text()) + '】'
+                                with open(fulldir2, 'a', encoding='utf-8') as f2:
+                                    f2.write(part22 + part23 + part24)
+                                i = i + 1
+                                continue
+                        if '%' in listexpn2[i]:
+                            lcname = str(listexpn2[i]).replace('%', '')
+                            tarname2 = str(lcname) + ".md"
+                            fulldir2 = os.path.join(path2, tarname2)
+                            with open(fulldir2, 'a', encoding='utf-8') as f0:
+                                f0.write('')
+                            contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                            if contm != '':
+                                part22 = '\n- ' + 'Translated: ' + str(self.le1.text())
+                                part23 = ''
+                                if self.le3.text() != '':
+                                    part23 = '【' + 'Publication: ' + str(self.le3.text()) + '】'
+                                part24 = ''
+                                if self.le8.text() != '':
+                                    part24 = '【' + 'Book: ' + str(self.le8.text()) + '】'
+                                with open(fulldir2, 'a', encoding='utf-8') as f2:
+                                    f2.write(part22 + part23 + part24)
+                                i = i + 1
+                                continue
+                            if contm == "":
+                                part22 = '- ' + 'Translated: ' + str(self.le1.text())
+                                part23 = ''
+                                if self.le3.text() != '':
+                                    part23 = '【' + 'Publication: ' + str(self.le3.text()) + '】'
+                                part24 = ''
+                                if self.le8.text() != '':
+                                    part24 = '【' + 'Book: ' + str(self.le8.text()) + '】'
+                                with open(fulldir2, 'a', encoding='utf-8') as f2:
+                                    f2.write(part22 + part23 + part24)
+                                i = i + 1
+                                continue
+                if self.le2.text() == '':
+                    self.text.setPlainText('Your input is empty!')
+
+            path3 = codecs.open('path_ins.txt', 'r', encoding='utf-8').read()
+            if path3 == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                if self.le7.text() != '':
+                    expname3 = str(self.le7.text())
+                    listexpn3 = expname3.split('、')
+                    le7i = 0
+                    while le7i >= 0 and le7i <= len(listexpn3) - 1:
+                        tarname3 = str(listexpn3[le7i]) + ".md"
+                        fulldir3 = os.path.join(path3, tarname3)
+                        with open(fulldir3, 'a', encoding='utf-8') as f0:
+                            f0.write('')
+                        contm = codecs.open(fulldir3, 'r', encoding='utf-8').read()
+                        if contm != '':
+                            part32 = '\n- ' + 'Title: ' + str(self.le1.text())
+                            part33 = ''
+                            if '%' not in self.le2.text():
+                                part33 = '【Authors: ' + str(self.le2.text() + '】')
+                            if '%' in self.le2.text():
+                                p3end = str(self.le2.text()).replace('%', '(translator)')
+                                part33 = '【Authors: ' + p3end + '】'
+                            with open(fulldir3, 'a', encoding='utf-8') as f3:
+                                f3.write(part32 + part33)
+                            le7i = le7i + 1
+                            continue
+                        if contm == '':
+                            part32 = '- ' + 'Title: ' + str(self.le1.text())
+                            part33 = ''
+                            if '%' not in self.le2.text():
+                                part33 = '【Authors: ' + str(self.le2.text() + '】')
+                            if '%' in self.le2.text():
+                                p3end = str(self.le2.text()).replace('%', '(translator)')
+                                part33 = '【Authors: ' + p3end + '】'
+                            with open(fulldir3, 'a', encoding='utf-8') as f3:
+                                f3.write(part32 + part33)
+                            le7i = le7i + 1
+                            continue
+                if self.le7.text() == '':
+                    self.text.setPlainText('Your input is empty!')
+
+            path4 = codecs.open('path_pub.txt', 'r', encoding='utf-8').read()
+            if path4 == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                if self.le3.text() != '':
+                    tarname4 = str(self.le3.text()) + ".md"
+                    fulldir4 = os.path.join(path4, tarname4)
+                    with open(fulldir4, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                    contm = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+                    if contm != '':
+                        part41 = '\n- ' + 'Title: ' + str(self.le1.text())
+                        part42 = ''
+                        if "%" not in self.le2.text():
+                            part42 = '【Authors: ' + str(self.le2.text() + '】')
+                        if '%' in self.le2.text():
+                            rende = str(self.le2.text()).replace('%', '(translator)')
+                            part42 = '【Authors: ' + rende + '】'
+                        part43 = '【Vol / Mon: ' + str(self.le4_1.text()) + '】'
+                        with open(fulldir4, 'a', encoding='utf-8') as f4:
+                            f4.write(part41 + part42 + part43)
+                    if contm == '':
+                        part41 = '- ' + 'Title: ' + str(self.le1.text())
+                        part42 = ''
+                        if "%" not in self.le2.text():
+                            part42 = '【Authors: ' + str(self.le2.text() + '】')
+                        if '%' in self.le2.text():
+                            rende = str(self.le2.text()).replace('%', '(translator)')
+                            part42 = '【Authors: ' + rende + '】'
+                        part43 = '【Vol / Mon: ' + str(self.le4_1.text()) + '】'
+                        with open(fulldir4, 'a', encoding='utf-8') as f4:
+                            f4.write(part41 + part42 + part43)
+                if self.le3.text() == '':
+                    self.text.setPlainText('Your input is empty!')
+
+            path5 = codecs.open('path_boo.txt', 'r', encoding='utf-8').read()
+            if path5 == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                if self.le8.text() != '':
+                    tarname5 = str(self.le8.text()) + ".md"
+                    fulldir5 = os.path.join(path5, tarname5)
+                    with open(fulldir5, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                    contm = codecs.open(fulldir5, 'r', encoding='utf-8').read()
+                    if contm != '':
+                        part51 = '\n- ' + 'Chapter ' + str(self.le9.text())
+                        part52 = '【' + str(self.le1.text() + '】')
+                        with open(fulldir5, 'a', encoding='utf-8') as f5:
+                            f5.write(part51 + part52)
+                    if contm == '':
+                        part51 = '- ' + 'Chapter ' + str(self.le9.text())
+                        part52 = '【' + str(self.le1.text() + '】')
+                        with open(fulldir5, 'a', encoding='utf-8') as f5:
+                            f5.write(part51 + part52)
+                if self.le8.text() == '':
+                    self.text.setPlainText('Your input is empty!')
+
+            if self.web_t3.isVisible():
+                home_dir = str(Path.home())
+                tarname1 = "Documents"
+                fulldir1 = os.path.join(home_dir, tarname1)
+                tarname2 = 'Obsidien'
+                fulldir2 = os.path.join(fulldir1, tarname2)
+                tarname3 = 'Database'
+                fulldir3 = os.path.join(fulldir2, tarname3)
+                tarnamea = 'Conference'
+                fulldira = os.path.join(fulldir3, tarnamea)
+                if self.leweb8.text() != '':
+                    tarname6 = str(self.leweb8.text()) + ".md"
+                    fulldirb = os.path.join(fulldira, tarname6)
+                    with open(fulldirb, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                    contm = codecs.open(fulldirb, 'r', encoding='utf-8').read()
+                    if contm != '':
+                        part61 = '\n- Title: ' + str(self.le1.text())
+                        part62 = '【Speakers: ' + str(self.le2.text() + '】')
+                        part63 = '【Institutes: ' + str(self.le7.text() + '】')
+                        part64 = '【Hosted by: ' + str(self.leweb9.text() + '】')
+                        part65 = '【' + str(self.le4.text()) + ' 年 ' + str(self.le4_1.text()) + ' 月'
+                        part66 = ''
+                        if self.leweb10.text() != '':
+                            part66 = '于#' + str(self.leweb10.text())
+                        part67 = '】'
+                        with open(fulldirb, 'a', encoding='utf-8') as f5:
+                            f5.write(part61 + part62 + part63 + part64 + part65 + part66 + part67)
+                    if contm == '':
+                        part61 = '- Title: ' + str(self.le1.text())
+                        part62 = '【Speakers: ' + str(self.le2.text() + '】')
+                        part63 = '【Institutes: ' + str(self.le7.text() + '】')
+                        part64 = '【Hosted by: ' + str(self.leweb9.text() + '】')
+                        part65 = '【' + str(self.le4.text()) + ' 年 ' + str(self.le4_1.text()) + ' 月'
+                        part66 = ''
+                        if self.leweb10.text() != '':
+                            part66 = '于#' + str(self.leweb10.text())
+                        part67 = '】'
+                        with open(fulldirb, 'a', encoding='utf-8') as f5:
+                            f5.write(part61 + part62 + part63 + part64 + part65 + part66 + part67)
+                tarnamec = 'Institutes'
+                fulldirc = os.path.join(fulldir3, tarnamec)
+                if self.leweb9.text() != '':
+                    tarname7 = str(self.leweb9.text()) + ".md"
+                    fulldird = os.path.join(fulldirc, tarname7)
+                    with open(fulldird, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                    contm = codecs.open(fulldird, 'r', encoding='utf-8').read()
+                    if contm != '':
+                        part71 = '\n- Hosted: ' + str(self.leweb8.text())
+                        part72 = ''
+                        if self.leweb8.text() == '':
+                            part72 = '【' + str(self.le1.text()) + '】'
+                        with open(fulldird, 'a', encoding='utf-8') as f5:
+                            f5.write(part71 + part72)
+                    if contm == '':
+                        part71 = '- Hosted: ' + str(self.leweb8.text())
+                        part72 = ''
+                        if self.leweb8.text() == '':
+                            part72 = '【' + str(self.le1.text()) + '】'
+                        with open(fulldird, 'a', encoding='utf-8') as f5:
+                            f5.write(part71 + part72)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text.setPlainText(contend)
+                self.text.ensureCursorVisible()  # 游标可用
+                cursor = self.text.textCursor()  # 设置游标
+                pos = len(self.text.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text.setTextCursor(cursor)  # 滚动到游标位置
+
+            self.read_t1.setVisible(False)
+            self.read_t2.setVisible(False)
+            self.read_t7.setVisible(False)
+            self.read_t3.setVisible(False)
+            self.read_t8.setVisible(False)
+            self.read_t4.setVisible(False)
+            self.read_t5.setVisible(False)
+            self.lbltool06.setVisible(False)
+            self.tool8.setVisible(False)
+            self.btnx4.setText('🔽')
+            if self.btn_t9.text() == 'Turned on!':
+                self.web_t3.setVisible(False)
+                self.web_t8.setVisible(False)
+
+            self.btnmain2.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #0085FF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #FFFFFF''')
+            self.btnmain2.setText('Added')
+            self.le1.setEnabled(False)
+
+    def clearabv(self):
+        self.le1.clear()
+        self.le2.clear()
+        self.le7.clear()
+        self.le3.clear()
+        self.le3_1.clear()
+        self.le4.clear()
+        self.le4_1.clear()
+        self.le5.clear()
+        self.le8.clear()
+        self.le9.clear()
+        self.le10.clear()
+        self.text.clear()
+        self.text11.clear()
+        self.text12.clear()
+        self.text13.clear()
+        self.text14.clear()
+        self.le20.clear()
+        self.le21.clear()
+        self.text21.clear()
+        self.text22.clear()
+        self.lec1.clear()
+        self.lec2.clear()
+        self.text31.clear()
+        self.lec0.clear()
+        self.text41.clear()
+        self.text42.clear()
+        self.text43.clear()
+        self.text44.clear()
+        self.text45.clear()
+        self.text46.clear()
+        self.text47.clear()
+        self.lem1.clear()
+        self.lem2.clear()
+        self.text51.clear()
+        self.text_s2.clear()
+        self.text_s3.clear()
+        self.text_s4.clear()
+        self.btnmain2.setStyleSheet('''
+                border: 1px outset grey;
+                background-color: #FFFFFF;
+                border-radius: 4px;
+                padding: 1px;
+                color: #000000''')
+        self.btnmain2.setText('Add')
+        self.btn_ex11.setStyleSheet('''
+                        border: 1px outset grey;
+                        background-color: #FFFFFF;
+                        border-radius: 4px;
+                        padding: 1px;
+                        color: #000000''')
+        self.btn_ex11.setText('Add')
+        self.btn_cl12.setStyleSheet('''
+                                border: 1px outset grey;
+                                background-color: #FFFFFF;
+                                border-radius: 4px;
+                                padding: 1px;
+                                color: #000000''')
+        self.btn_cl12.setText('Add')
+        self.btn_ana13.setStyleSheet('''
+                                border: 1px outset grey;
+                                background-color: #FFFFFF;
+                                border-radius: 4px;
+                                padding: 1px;
+                                color: #000000''')
+        self.btn_ana13.setText('Add')
+        self.btn_2k1.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #FFFFFF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #000000''')
+        self.btn_2k1.setText('Add')
+        self.btn_ce31.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_ce31.setText('Add')
+        self.btn_ce32.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_ce32.setText('Add')
+        self.btn_the30.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the30.setText('Add')
+        self.btn_the41.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the41.setText('+')
+        self.btn_the42.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the42.setText('+')
+        self.btn_the43.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the43.setText('+')
+        self.btn_the44.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the44.setText('+')
+        self.btn_the45.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the45.setText('+')
+        self.btn_the46.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the46.setText('+')
+        self.btn_the47.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_the47.setText('+')
+        self.btn_51.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_51.setText('Add')
+        self.btn_52.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_52.setText('Add')
+        self.widget0.clear()
+        self.widget0.addItems(['Append at the end (default)'])
+        with open('path_rst.txt', 'w', encoding='utf-8') as f0:
+            f0.write('')
+        self.le1.setEnabled(True)
+        with open('path_ttl.txt', 'w', encoding='utf-8') as fz:
+            fz.write('')
+        self.leweb3.clear()
+        self.read_t1.setVisible(True)
+        self.read_t2.setVisible(True)
+        self.read_t7.setVisible(True)
+        self.read_t3.setVisible(True)
+        self.read_t8.setVisible(True)
+        self.read_t4.setVisible(True)
+        self.read_t5.setVisible(True)
+        self.lbltool06.setVisible(True)
+        self.tool8.setVisible(True)
+        self.btnx4.setText('🔼')
+        if self.btn_t9.text() == 'Turned on!':
+            self.web_t3.setVisible(True)
+            self.web_t8.setVisible(True)
+            self.read_t3.setVisible(False)
+            self.read_t8.setVisible(False)
+
+    def addprob(self):
+        if self.btn_ex11.text() != 'Added and renewed list' and self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text11.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text11.setStyleSheet('color:red')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part1 = '\n\n## ' + 'Q/P: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text11.toPlainText())))) + '\n'
+                part_n = '\n' + get_rst
+                if self.le1.text() != '' and self.text11.toPlainText() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            path2 = codecs.open('path_pro.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text11.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text11.setStyleSheet('color:red')
+            else:
+                if self.text11.toPlainText() != '':
+                    tarname2 = str(self.cleaninput(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text11.toPlainText()))))) + ".md"
+                    fulldir2 = os.path.join(path2, tarname2)
+                    with open(fulldir2, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                    contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                    if contm != '':
+                        part21 = ''
+                        if self.le1.text() != '':
+                            part21 = '\n- ' + 'Title: ' + str(self.le1.text())
+                        part22 = ''
+                        if self.le2.text() != '':
+                            if '%' not in self.le2.text():
+                                part22 = '【Authors: ' + str(self.le2.text() + '】')
+                            if '%' in self.le2.text():
+                                p3end = str(self.le2.text()).replace('%', '(translator)')
+                                part22 = '【Authors: ' + p3end + '】'
+                        part23 = ''
+                        if self.le1.text() == '' and self.le2.text() == '':
+                            part23 = 'This P / Q is formed by mere thinking.'
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part21 + part22 + part23)
+                    if contm == '':
+                        part21 = ''
+                        if self.le1.text() != '':
+                            part21 = '- ' + 'Title: ' + str(self.le1.text())
+                        part22 = ''
+                        if self.le2.text() != '':
+                            if '%' not in self.le2.text():
+                                part22 = '【Authors: ' + str(self.le2.text() + '】')
+                            if '%' in self.le2.text():
+                                p3end = str(self.le2.text()).replace('%', '(translator)')
+                                part22 = '【Authors: ' + p3end + '】'
+                        part23 = ''
+                        if self.le1.text() == '' and self.le2.text() == '':
+                            part23 = 'This P / Q is formed by mere thinking.'
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part21 + part22 + part23)
+                if self.text11.toPlainText() == '':
+                    self.text.setPlainText('Your input is empty!')
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            if self.text11.toPlainText() != '':
+                self.btn_ex11.setStyleSheet('''
+                        border: 1px outset grey;
+                        background-color: #0085FF;
+                        border-radius: 4px;
+                        padding: 1px;
+                        color: #FFFFFF''')
+                self.btn_ex11.setText('Added and renewed list')
+                self.text11.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text11.toPlainText()))))
+
+            itemold = self.widget0.currentText()
+            self.widget0.clear()
+            self.widget0.addItems(['Append at the end (default)'])
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname1 = str(self.le1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            if self.le1.text() != '':
+                maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                pattern = re.compile(r'## (.*?)\n')
+                result = pattern.findall(maintxt)
+                result = '☆'.join(result)
+                if result != '':
+                    result = result.replace('#', '')
+                    result = result.replace('# ', '')
+                    result = result.replace('Q/P: ', '')
+                    result = result.split('☆')
+                    for i in range(len(result)):
+                        result[i] = 'After ' + result[i]
+                        result[i] = ''.join(result[i])
+                    self.widget0.addItems(result)
+                    if itemold in result:
+                        itemnub = result.index(itemold) + 1
+                        self.widget0.setCurrentIndex(itemnub)
+                    if itemold not in result:
+                        self.widget0.setCurrentIndex(0)
+
+    def clearpro(self):
+        self.text11.clear()
+        self.text12.clear()
+        self.text13.clear()
+        self.text14.clear()
+        self.btn_ex11.setStyleSheet('''
+                border: 1px outset grey;
+                background-color: #FFFFFF;
+                border-radius: 4px;
+                padding: 1px;
+                color: #000000''')
+        self.btn_ex11.setText('Add')
+        self.btn_cl12.setStyleSheet('''
+                        border: 1px outset grey;
+                        background-color: #FFFFFF;
+                        border-radius: 4px;
+                        padding: 1px;
+                        color: #000000''')
+        self.btn_cl12.setText('Add')
+        self.btn_ana13.setStyleSheet('''
+                        border: 1px outset grey;
+                        background-color: #FFFFFF;
+                        border-radius: 4px;
+                        padding: 1px;
+                        color: #000000''')
+        self.btn_ana13.setText('Add')
+
+    def addcla(self):
+        if self.btn_cl12.text() != 'Added' and self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text12.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text12.setStyleSheet('color:red')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part1 = '\n- ' + 'Claim: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text12.toPlainText())))) + '\n'
+                part_n = '\n' + get_rst
+                if self.le1.text() != '' and self.text12.toPlainText() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            if self.text12.toPlainText() != '':
+                self.btn_cl12.setStyleSheet('''
+                        border: 1px outset grey;
+                        background-color: #0085FF;
+                        border-radius: 4px;
+                        padding: 1px;
+                        color: #FFFFFF''')
+                self.btn_cl12.setText('Added')
+                self.text12.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text12.toPlainText()))))
+
+    def clearcla(self):
+        self.text12.clear()
+        self.text13.clear()
+        self.text14.clear()
+        self.btn_cl12.setStyleSheet('''
+                border: 1px outset grey;
+                background-color: #FFFFFF;
+                border-radius: 4px;
+                padding: 1px;
+                color: #000000''')
+        self.btn_cl12.setText('Add')
+        self.btn_ana13.setStyleSheet('''
+                        border: 1px outset grey;
+                        background-color: #FFFFFF;
+                        border-radius: 4px;
+                        padding: 1px;
+                        color: #000000''')
+        self.btn_ana13.setText('Add')
+
+    def addana(self):
+        if self.btn_ana13.text() != 'Added' and self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text13.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text13.setStyleSheet('color:red')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part1 = ''
+                part_n = '\n' + get_rst
+                if self.text12.toPlainText() != "":
+                    part1 = '\n\t- ' + 'Analysis: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text13.toPlainText())))) + '\n'
+                if self.text12.toPlainText() == "":
+                    part1 = '\n- ' + 'Analysis: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text13.toPlainText())))) + '\n'
+                if self.le1.text() != '' and self.text13.toPlainText() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+        if self.text13.toPlainText() != '':
+            self.btn_ana13.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #0085FF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #FFFFFF''')
+            self.btn_ana13.setText('Added')
+            self.text13.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text13.toPlainText()))))
+
+    def clearana(self):
+        self.text13.clear()
+        self.text14.clear()
+        self.btn_ana13.setStyleSheet('''
+                border: 1px outset grey;
+                background-color: #FFFFFF;
+                border-radius: 4px;
+                padding: 1px;
+                color: #000000''')
+        self.btn_ana13.setText('Add')
+
+    def addmy(self):
+        if self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text14.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text14.setStyleSheet('color:red')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part1 = ''
+                part_n = '\n' + get_rst
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t\t- ' + '【' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text14.toPlainText())))) + '】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t- ' + '【' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text14.toPlainText())))) + '】' + '\n'
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() == '':
+                    part1 = '\n\t- ' + '【' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text14.toPlainText())))) + '】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() == '':
+                    part1 = '\n- ' + '【' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text14.toPlainText())))) + '】' + '\n'
+                if self.le1.text() != '' and self.text14.toPlainText() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            self.text14.clear()
+
+    def addexc(self):
+        if self.btn_2k1.text() != 'Added' and self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text21.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text21.setStyleSheet('color:red')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part0 = ''
+                part_n = '\n' + get_rst
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() != '':
+                    part0 = '\n\t\t- '
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() != '':
+                    part0 = '\n\t- '
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() == '':
+                    part0 = '\n\t- '
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() == '':
+                    part0 = '\n- '
+                part1 = '[Excerpt]'
+                if self.le9.text() != '' and self.le20.text() != '' and self.le21.text() != '':
+                    part1 = '[Chapter ' + str(self.le9.text()) + ', Part ' + str(self.le20.text()) + ', Page ' + str(self.le21.text()) + ']'
+                if self.le9.text() == '' and (self.le20.text() and self.le21.text() != ''):
+                    part1 = '[Part ' + str(self.le20.text()) + ', Page ' + str(self.le21.text()) + ']'
+                if self.le9.text() != '' and self.le20.text() == '' and self.le21.text() != '':
+                    part1 = '[Chapter ' + str(self.le9.text()) + ', Page ' + str(self.le21.text()) + ']'
+                if self.le9.text() != '' and self.le20.text() != '' and self.le21.text() == '':
+                    part1 = '[Chapter ' + str(self.le9.text()) + ', Part ' + str(self.le20.text()) + ']'
+                if self.le9.text() == '' and self.le20.text() == '' and self.le21.text() != '':
+                    part1 = '[Page ' + str(self.le21.text()) + ']'
+                if self.le9.text() == '' and self.le20.text() != '' and self.le21.text() == '' :
+                    part1 = '[Part ' + str(self.le20.text()) + ']'
+                if self.le9.text() != '' and self.le20.text() == ''and self.le21.text() == '':
+                    part1 = '[Chapter ' + str(self.le9.text()) + ']'
+                if self.le9.text() == '' and self.le20.text() == '' and self.le21.text() == '':
+                    part1 = '[Excerpt]'
+
+                part2 = '「' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text21.toPlainText())))) + '」\n'
+                if self.le1.text() != '' and self.text21.toPlainText() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part0 + part1 + part2 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            if self.text21.toPlainText() != '':
+                self.btn_2k1.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #0085FF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #FFFFFF''')
+                self.btn_2k1.setText('Added')
+                self.text21.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text21.toPlainText()))))
+
+    def clearexc(self):
+        # self.le20.clear()
+        self.le21.clear()
+        self.text21.clear()
+        self.text22.clear()
+        self.btn_2k1.setStyleSheet('''
+            border: 1px outset grey;
+            background-color: #FFFFFF;
+            border-radius: 4px;
+            padding: 1px;
+            color: #000000''')
+        self.btn_2k1.setText('Add')
+
+    def addmv(self):
+        if self.le1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.text22.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text22.setStyleSheet('color:red')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part_n = '\n' + get_rst
+                part0 = ''
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() != '':
+                    part0 = '\n\t\t'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() != '':
+                    part0 = '\n\t'
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() == '':
+                    part0 = '\n\t'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() == '':
+                    part0 = '\n'
+                part1 = '\t- ' + '【' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text22.toPlainText())))) + '】\n'
+                if self.le1.text() != '' and self.text22.toPlainText() != '' and self.text21.toPlainText() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part0 + part1 + part_n)
+                    self.text22.clear()
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+    def addcon(self):
+        if self.btn_ce31.text() != 'Added' and self.le1.text() != '' and self.lec1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.lec1.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part_n = '\n' + get_rst
+                part1 = ''
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t\t- ' + '【The article explained a concept: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t- ' + '【The article explained a concept: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() == '':
+                    part1 = '\n\t- ' + '【The article explained a concept: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() == '':
+                    part1 = '\n- ' + '【The article explained a concept: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + '.】' + '\n'
+                if self.le1.text() != '' and self.lec1.text() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            path2 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.lec1.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                if self.lec1.text() != '':
+                    tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + ".md"
+                    fulldir2 = os.path.join(path2, tarname2)
+                    with open(fulldir2, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                if self.lec1.text() == '':
+                    self.text_s2.setPlainText('Your input is empty!')
+
+            pathend2 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec1.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s2.setPlainText(contend2)
+                    self.text_s2.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s2.textCursor()  # 设置游标
+                    pos = len(self.text_s2.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s2.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.lec1.text() != '':
+                self.btn_ce31.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.btn_ce31.setText('Added')
+                self.lec1.setText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text()))))
+                self.lec1.setEnabled(False)
+
+    def clearnam(self):
+        self.lec1.clear()
+        self.text_s2.clear()
+        self.lec2.clear()
+        self.text31.clear()
+        self.btn_ce31.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #FFFFFF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #000000''')
+        self.btn_ce31.setText('Add')
+        self.btn_ce32.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_ce32.setText('Add')
+        self.lec1.setEnabled(True)
+
+    def addpers(self):
+        if self.btn_ce32.text() != 'Added' and self.lec1.text() != '':
+            path2 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.lec2.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                part1 = ''
+                if contm != '':
+                    part1 = '\n- ' + 'Perspective: '
+                if contm == '':
+                    part1 = '- ' + 'Perspective: '
+                part2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec2.text()))))
+                if self.lec1.text() != '' and self.lec2.text() != '':
+                    with open(fulldir2, 'a', encoding='utf-8') as f2:
+                        f2.write(part1 + part2)
+
+            pathend2 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec1.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s2.setPlainText(contend2)
+                    self.text_s2.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s2.textCursor()  # 设置游标
+                    pos = len(self.text_s2.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s2.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.lec2.text() != '':
+                self.btn_ce32.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.btn_ce32.setText('Added')
+                self.lec2.setText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec2.text()))))
+
+    def cleanpers(self):
+        self.lec2.clear()
+        self.text31.clear()
+        self.btn_ce32.setStyleSheet('''
+                    border: 1px outset grey;
+                    background-color: #FFFFFF;
+                    border-radius: 4px;
+                    padding: 1px;
+                    color: #000000''')
+        self.btn_ce32.setText('Add')
+
+    def addconexp(self):
+        path2 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+        if path2 == '':
+            self.text31.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + ".md"
+            fulldir2 = os.path.join(path2, tarname2)
+            part1 = '\n\t- Explanation: ' + str(self.default_clean(self.text31.toPlainText()))
+            part2 = ''
+            if self.le1.text() != '':
+                part2 = '【from ' + str(self.le1.text()) + '】'
+            part3 = ''
+            if self.le8.text() != '':
+                part3 = '【from ' + str(self.le8.text()) + '】'
+            if self.lec1.text() != '' and self.text31.toPlainText() != '':
+                with open(fulldir2, 'a', encoding='utf-8') as f2:
+                    f2.write(part1 + part2 + part3)
+
+        pathend2 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+        if pathend2 == '':
+            self.text_s2.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec1.text())))) + ".md"
+            fulldirend2 = os.path.join(pathend2, tarnameend2)
+            if self.lec1.text() != '':
+                contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                self.text_s2.setPlainText(contend2)
+                self.text_s2.ensureCursorVisible()  # 游标可用
+                cursor = self.text_s2.textCursor()  # 设置游标
+                pos = len(self.text_s2.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text_s2.setTextCursor(cursor)  # 滚动到游标位置
+
+        self.text31.clear()
+
+    def addthero(self):
+        if self.btn_the30.text() != 'Added' and self.le1.text() != '' and self.lec0.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.lec0.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part_n = '\n' + get_rst
+                part1 = ''
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t\t- ' + '【The article explained a theory: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t- ' + '【The article explained a theory: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() == '':
+                    part1 = '\n\t- ' + '【The article explained a theory: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() == '':
+                    part1 = '\n- ' + '【The article explained a theory: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + '.】' + '\n'
+                if self.le1.text() != '' and self.lec0.text() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.lec0.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                if self.lec0.text() != '':
+                    tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                    fulldir2 = os.path.join(path2, tarname2)
+                    part1 = ''
+                    with open(fulldir2, 'a', encoding='utf-8') as f2:
+                        f2.write(part1)
+                if self.lec0.text() == '':
+                    self.text_s3.setPlainText('Your input is empty!')
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.lec0.text() != '':
+                self.btn_the30.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.btn_the30.setText('Added')
+                self.lec0.setText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text()))))
+                self.lec0.setEnabled(False)
+
+    def clthen(self):
+        self.lec0.clear()
+        self.text_s3.clear()
+        self.btn_the30.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the30.setText('Add')
+
+        self.text41.clear()
+        self.btn_the41.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the41.setText('+')
+
+        self.text42.clear()
+        self.btn_the42.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the42.setText('+')
+
+        self.text43.clear()
+        self.btn_the43.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the43.setText('+')
+
+        self.text44.clear()
+        self.btn_the44.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the44.setText('+')
+
+        self.text45.clear()
+        self.btn_the45.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the45.setText('+')
+
+        self.text46.clear()
+        self.btn_the46.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the46.setText('+')
+
+        self.text47.clear()
+        self.btn_the47.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_the47.setText('+')
+        self.lec0.setEnabled(True)
+
+    def addpoprefe(self):
+        if self.btn_the41.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text41.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Question preferences: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text41.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text41.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 +part3)
+                if contm == '':
+                    part1 = '- Question preferences: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text41.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text41.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text41.toPlainText() != '':
+                self.btn_the41.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.btn_the41.setText('✓')
+                self.text41.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text41.toPlainText()))))
+
+    def clearpropref(self):
+        self.text41.clear()
+        self.btn_the41.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the41.setText('+')
+
+    def addmetpref(self):
+        if self.btn_the42.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text42.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Method preferences: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text42.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text42.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+                if contm == '':
+                    part1 = '- Method preferences: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text42.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text42.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text42.toPlainText() != '':
+                self.btn_the42.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_the42.setText('✓')
+                self.text42.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text42.toPlainText()))))
+
+    def clearmedpref(self):
+        self.text42.clear()
+        self.btn_the42.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the42.setText('+')
+
+    def thnpatt(self):
+        if self.btn_the43.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text43.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Thinking patterns: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text43.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text43.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+                if contm == '':
+                    part1 = '- Thinking patterns: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text43.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text43.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text43.toPlainText() != '':
+                self.btn_the43.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_the43.setText('✓')
+                self.text43.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text43.toPlainText()))))
+
+    def clearthnptn(self):
+        self.text43.clear()
+        self.btn_the43.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the43.setText('+')
+
+    def thnbasv(self):
+        if self.btn_the44.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text44.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Basic views: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text44.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text44.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+                if contm == '':
+                    part1 = '- Basic views: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text44.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text44.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text44.toPlainText() != '':
+                self.btn_the44.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_the44.setText('✓')
+                self.text44.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text44.toPlainText()))))
+
+    def clearbscpv(self):
+        self.text44.clear()
+        self.btn_the44.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the44.setText('+')
+
+    def emexpls(self):
+        if self.btn_the45.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text45.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Empirical examples: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text45.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text45.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+                if contm == '':
+                    part1 = '- Empirical examples: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text45.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text45.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text45.toPlainText() != '':
+                self.btn_the45.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_the45.setText('✓')
+                self.text45.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text45.toPlainText()))))
+
+    def clearemepls(self):
+        self.text45.clear()
+        self.btn_the45.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the45.setText('+')
+
+    def addreviwcmts(self):
+        if self.btn_the46.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text46.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Reviews and comments: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text46.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text46.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+                if contm == '':
+                    part1 = '- Reviews and comments: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text46.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text46.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text46.toPlainText() != '':
+                self.btn_the46.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_the46.setText('✓')
+                self.text46.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text46.toPlainText()))))
+
+    def clearecmt(self):
+        self.text46.clear()
+        self.btn_the46.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the46.setText('+')
+
+    def addevotr(self):
+        if self.btn_the47.text() != '✓':
+            path2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.text47.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                with open(fulldir2, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                if contm != '':
+                    part1 = '\n- Evolution and trends: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text47.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text47.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+                if contm == '':
+                    part1 = '- Evolution and trends: ' + str(
+                        self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text47.toPlainText()))))
+                    part2 = ''
+                    if self.le1.text() != '':
+                        part2 = '【from ' + str(self.le1.text()) + '】'
+                    part3 = ''
+                    if self.le8.text() != '':
+                        part3 = '【from ' + str(self.le8.text()) + '】'
+                    if self.lec0.text() != '' and self.text47.toPlainText() != '':
+                        with open(fulldir2, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + part2 + part3)
+
+            pathend2 = codecs.open('path_the.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s3.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lec0.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lec0.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s3.setPlainText(contend2)
+                    self.text_s3.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s3.textCursor()  # 设置游标
+                    pos = len(self.text_s3.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s3.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.text47.toPlainText() != '':
+                self.btn_the47.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_the47.setText('✓')
+                self.text47.setPlainText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.text47.toPlainText()))))
+
+    def clearevotr(self):
+        self.text47.clear()
+        self.btn_the47.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_the47.setText('+')
+
+    def addmetds(self):
+        if self.btn_51.text() != 'Added' and self.le1.text() != '' and self.lem1.text() != '':
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.lem1.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                with open(fulldir1, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                get_ori = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                get_rst = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                get_ori = get_ori.replace(get_rst, '')
+                get_ori = get_ori.rstrip('\n')
+                part_z = get_ori
+                part_n = '\n' + get_rst
+                part1 = ''
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t\t- ' + '【The article used a method: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() != '':
+                    part1 = '\n\t- ' + '【The article used a method: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() != '' and self.text13.toPlainText() == '':
+                    part1 = '\n\t- ' + '【The article used a method: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + '.】' + '\n'
+                if self.text12.toPlainText() == '' and self.text13.toPlainText() == '':
+                    part1 = '\n- ' + '【The article used a method: ' + str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + '.】' + '\n'
+                if self.le1.text() != '' and self.lem1.text() != '':
+                    with open(fulldir1, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + part1 + part_n)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                if self.le1.text() != '':
+                    contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                    self.text.setPlainText(contend)
+                    posnu = codecs.open('path_rst.txt', 'r', encoding='utf-8').read()
+                    self.text.ensureCursorVisible()  # 游标可用
+                    cursor = self.text.textCursor()  # 设置游标
+                    pos = int(len(self.text.toPlainText()) - len(posnu))  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text.setTextCursor(cursor)  # 滚动到游标位置
+                    if self.text.verticalScrollBar().maximum() != 0:
+                        proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                        tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                        self.real1.verticalScrollBar().setValue(tar_pro)
+
+            path2 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.lem1.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                if self.lem1.text() != '':
+                    tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + ".md"
+                    fulldir2 = os.path.join(path2, tarname2)
+                    with open(fulldir2, 'a', encoding='utf-8') as f0:
+                        f0.write('')
+                if self.lem1.text() == '':
+                    self.text_s4.setPlainText('Your input is empty!')
+
+            pathend2 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s4.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lem1.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s4.setPlainText(contend2)
+                    self.text_s4.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s4.textCursor()  # 设置游标
+                    pos = len(self.text_s4.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s4.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.lem1.text() != '':
+                self.btn_51.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.btn_51.setText('Added')
+                self.lem1.setText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text()))))
+                self.lem1.setEnabled(False)
+
+    def clearmetnm(self):
+        self.lem1.clear()
+        self.text_s4.clear()
+        self.btn_51.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_51.setText('Add')
+        self.lem2.clear()
+        self.btn_52.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_52.setText('Add')
+        self.text51.clear()
+        self.lem1.setEnabled(True)
+
+    def addmetneeds(self):
+        if self.btn_52.text() != 'Added' and self.lem1.text() != '':
+            path2 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+            if path2 == '':
+                self.lem2.setText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + ".md"
+                fulldir2 = os.path.join(path2, tarname2)
+                contm = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+                part1 = ''
+                if contm != '':
+                    part1 = '\n- ' + 'Needs to be met: '
+                if contm == '':
+                    part1 = '- ' + 'Needs to be met: '
+                part2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem2.text()))))
+                if self.lem1.text() != '' and self.lem2.text() != '':
+                    with open(fulldir2, 'a', encoding='utf-8') as f2:
+                        f2.write(part1 + part2)
+
+            pathend2 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+            if pathend2 == '':
+                self.text_s4.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + ".md"
+                fulldirend2 = os.path.join(pathend2, tarnameend2)
+                if self.lem1.text() != '':
+                    contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                    self.text_s4.setPlainText(contend2)
+                    self.text_s4.ensureCursorVisible()  # 游标可用
+                    cursor = self.text_s4.textCursor()  # 设置游标
+                    pos = len(self.text_s4.toPlainText())  # 获取文本尾部的位置
+                    cursor.setPosition(pos)  # 游标位置设置为尾部
+                    self.text_s4.setTextCursor(cursor)  # 滚动到游标位置
+
+            if self.lem2.text() != '':
+                self.btn_52.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #0085FF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #FFFFFF''')
+                self.btn_52.setText('Added')
+                self.lem2.setText(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem2.text()))))
+
+    def clearmetneeds(self):
+        self.lem2.clear()
+        self.text51.clear()
+        self.btn_52.setStyleSheet('''
+                            border: 1px outset grey;
+                            background-color: #FFFFFF;
+                            border-radius: 4px;
+                            padding: 1px;
+                            color: #000000''')
+        self.btn_52.setText('Add')
+
+    def addmetdets(self):
+        path2 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+        if path2 == '':
+            self.text51.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarname2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + ".md"
+            fulldir2 = os.path.join(path2, tarname2)
+            part1 = '\n\t- Explanation: ' + str(self.default_clean(self.text51.toPlainText()))
+            part2 = ''
+            if self.le1.text() != '':
+                part2 = '【from ' + str(self.le1.text()) + '】'
+            part3 = ''
+            if self.le8.text() != '':
+                part3 = '【from ' + str(self.le8.text()) + '】'
+            if self.lem1.text() != '' and self.text51.toPlainText() != '':
+                with open(fulldir2, 'a', encoding='utf-8') as f2:
+                    f2.write(part1 + part2 +part3)
+
+        pathend2 = codecs.open('path_met.txt', 'r', encoding='utf-8').read()
+        if pathend2 == '':
+            self.text_s4.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend2 = str(self.default_clean(self.cleanlinebreak(self.cleancitmak(self.lem1.text())))) + ".md"
+            fulldirend2 = os.path.join(pathend2, tarnameend2)
+            if self.lem1.text() != '':
+                contend2 = codecs.open(fulldirend2, 'r', encoding='utf-8').read()
+                self.text_s4.setPlainText(contend2)
+                self.text_s4.ensureCursorVisible()  # 游标可用
+                cursor = self.text_s4.textCursor()  # 设置游标
+                pos = len(self.text_s4.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text_s4.setTextCursor(cursor)  # 滚动到游标位置
+
+        self.text51.clear()
+
+    def findandrepopen(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Start replacement!", path1, "Markdown Files (*.md)")
+            if file_name != '':
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                contend = contend.replace(self.tool1_5.text(), self.tool1.text())
+                with open(file_name, 'w', encoding='utf-8') as f2:
+                    f2.write(contend)
+                self.tool1.clear()
+                self.tool1_5.clear()
+
+    def fanrep(self):
+        if self.le1.text() != '':
+            path2 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname2 = str(self.le1.text()) + ".md"
+            fulldir2 = os.path.join(path2, tarname2)
+            contend = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            contend = contend.replace(self.tool1_5.text(), self.tool1.text())
+            with open(fulldir2, 'w', encoding='utf-8') as f2:
+                f2.write(contend)
+            self.tool1.clear()
+            self.tool1_5.clear()
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text.setPlainText(contend)
+                self.text.ensureCursorVisible()  # 游标可用
+                cursor = self.text.textCursor()  # 设置游标
+                pos = len(self.text.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text.setTextCursor(cursor)  # 滚动到游标位置
+        if self.le1.text() == '':
+            self.tool1.setText('The article file is not open, please open a file!')
+
+    def redirtname(self):
+        if self.le1.text() != '':
+            path2 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname2 = str(self.le1.text()) + ".md"
+            fulldir2 = os.path.join(path2, tarname2)
+            contend = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            targ = '[[' + self.tool3.text() + '|' + self.tool2.text() + ']]'
+            contend = contend.replace(self.tool2.text(), targ)
+            with open(fulldir2, 'w', encoding='utf-8') as f2:
+                f2.write(contend)
+            self.tool2.clear()
+            self.tool3.clear()
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text.setPlainText(contend)
+                self.text.ensureCursorVisible()  # 游标可用
+                cursor = self.text.textCursor()  # 设置游标
+                pos = len(self.text.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text.setTextCursor(cursor)  # 滚动到游标位置
+        if self.le1.text() == '':
+            self.tool2.setText('The article file is not open, please open a file!')
+
+    def anotred(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Start redirection!", path1, "Markdown Files (*.md)")
+            if file_name != '':
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                targ = '[[' + self.tool3.text() + '|' + self.tool2.text() + ']]'
+                contend = contend.replace(self.tool2.text(), targ)
+                with open(file_name, 'w', encoding='utf-8') as f2:
+                    f2.write(contend)
+                self.tool2.clear()
+                self.tool3.clear()
+
+    def bioarton(self):
+        if self.le1.text() != '':
+            path2 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname2 = str(self.le1.text()) + ".md"
+            fulldir2 = os.path.join(path2, tarname2)
+            contend = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            contend = self.addb(contend)
+            with open(fulldir2, 'w', encoding='utf-8') as f2:
+                f2.write(contend)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text.setPlainText(contend)
+                self.text.ensureCursorVisible()  # 游标可用
+                cursor = self.text.textCursor()  # 设置游标
+                pos = len(self.text.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text.setTextCursor(cursor)  # 滚动到游标位置
+
+    def bioartoff(self):
+        if self.le1.text() != '':
+            path2 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            tarname2 = str(self.le1.text()) + ".md"
+            fulldir2 = os.path.join(path2, tarname2)
+            contend = codecs.open(fulldir2, 'r', encoding='utf-8').read()
+            contend = self.remb(contend)
+            with open(fulldir2, 'w', encoding='utf-8') as f2:
+                f2.write(contend)
+
+            pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+                # self.text.setStyleSheet('color:red')
+            else:
+                tarnameend = str(self.le1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text.setPlainText(contend)
+                self.text.ensureCursorVisible()  # 游标可用
+                cursor = self.text.textCursor()  # 设置游标
+                pos = len(self.text.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text.setTextCursor(cursor)  # 滚动到游标位置
+
+    def anobioon(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Start redirection!", path1, "Markdown Files (*.md)")
+            if file_name != '':
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                contend = self.addb(contend)
+                with open(file_name, 'w', encoding='utf-8') as f2:
+                    f2.write(contend)
+
+    def anobiooff(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Start redirection!", path1, "Markdown Files (*.md)")
+            if file_name != '':
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                contend = self.remb(contend)
+                with open(file_name, 'w', encoding='utf-8') as f2:
+                    f2.write(contend)
+
+    def addb(self, a):
+        if a != None and a != '':
+            a = str(a)
+            aj = jieba.cut(a, cut_all=False)
+            paj = '/'.join(aj)
+            saj = paj.split('/')
+
+            def containenglish(str0):  # 判断是否包含英文字母
+                import re
+                return bool(re.search('[a-zA-Za-zA-Z]', str0))
+
+            def is_contain_chinese(check_str):  # 判断是否包含中文字
+                for ch in check_str:
+                    if u'\u4e00' <= ch <= u'\u9fff':
+                        return True
+                return False
+
+            def is_contain_num(str0):  # 判断是否包含数字
+                import re
+                return bool(re.search('[0-90-9]', str0))
+
+            def is_contain_symbol(keyword):
+                if re.search(r"\W", keyword):
+                    return True
+                else:
+                    return False
+
+            for i in range(len(saj)):
+                if containenglish(str(saj[i])) or is_contain_chinese(str(saj[i])) or is_contain_num(str(saj[i])):
+                    if len(saj[i]) == 1:
+                        saj[i] = '**' + saj[i] + '**'
+                        i = i + 1
+                        continue
+                    if len(saj[i]) >= 2:
+                        if 'ing' in saj[i]:
+                            saj[i] = saj[i].replace('ing', '**ing')
+                            saj[i] = saj[i].replace('**ing**ing', 'ing**ing')
+                            laj = list(saj[i])
+                            laj.insert(0, '**')
+                            saj[i] = ''.join(laj)
+                            i = i + 1
+                            continue
+                        else:
+                            if len(saj[i]) % 2 == 0:
+                                laj = list(saj[i])
+                                uu = len(saj[i]) / 2
+                                laj.insert(int(uu), '**')
+                                laj.insert(0, '**')
+                                saj[i] = ''.join(laj)
+                                i = i + 1
+                                continue
+                            if len(saj[i]) % 2 != 0:
+                                laj = list(saj[i])
+                                laj.insert(0, '**')
+                                uu = len(saj[i]) + 1
+                                laj.insert(int(uu / 2) + 1, '**')
+                                saj[i] = ''.join(laj)
+                                i = i + 1
+                                continue
+
+            esj = ''.join(saj)
+
+            def find_this(q, i):
+                result = q[i]
+                return result
+
+            def find_next(q, i):
+                result = q[i + 1]
+                return result
+
+            i = 0
+            while i <= len(esj) - 1:
+                if esj[i] == '¥' and not is_contain_symbol(str(esj[i - 1])):
+                    esj = list(esj)
+                    esj.insert(i, ' ')
+                    esj = ''.join(esj)
+                    i = i + 2
+                    continue
+                if esj[i] == '$' and not is_contain_symbol(str(esj[i - 1])):
+                    esj = list(esj)
+                    esj.insert(i, ' ')
+                    esj = ''.join(esj)
+                    i = i + 2
+                    continue
+                if esj[i] == "%":
+                    if esj[i - 1] == ' ':
+                        esj = list(esj)
+                        del esj[i - 1]
+                        esj = ''.join(esj)
+                        i = i - 1
+                        continue
+                    else:
+                        esj = list(esj)
+                        esj.insert(i + 1, ' ')
+                        esj = ''.join(esj)
+                        i = i + 2
+                        continue
+                if esj[i] == "°":
+                    if esj[i - 1] == ' ':
+                        esj = list(esj)
+                        del esj[i - 1]
+                        esj = ''.join(esj)
+                        i = i - 1
+                        continue
+                    else:
+                        esj = list(esj)
+                        esj.insert(i + 1, ' ')
+                        esj = ''.join(esj)
+                        i = i + 2
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            i = 0
+            while i >= 0 and i < len(esj) - 1:
+                if is_contain_chinese(str(find_this(esj, i))) and containenglish(str(find_next(esj, i))):  # 从中文转英文
+                    esj = list(esj)
+                    esj.insert(i + 1, ' ')
+                    esj = ''.join(esj)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_this(esj, i))) and is_contain_num(str(find_next(esj, i))):  # 从中文转数字
+                    esj = list(esj)
+                    esj.insert(i + 1, ' ')
+                    esj = ''.join(esj)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(esj, i))) and is_contain_num(str(find_this(esj, i))):  # 从数字转中文
+                    esj = list(esj)
+                    esj.insert(i + 1, ' ')
+                    esj = ''.join(esj)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_this(esj, i))) and containenglish(str(find_next(esj, i))):  # 从数字转英文
+                    esj = list(esj)
+                    esj.insert(i + 1, ' ')
+                    esj = ''.join(esj)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next(esj, i))) and containenglish(str(find_this(esj, i))):  # 从英文转数字
+                    esj = list(esj)
+                    esj.insert(i + 1, ' ')
+                    esj = ''.join(esj)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(esj, i))) and containenglish(str(find_this(esj, i))):  # 从英文转中文
+                    esj = list(esj)
+                    esj.insert(i + 1, ' ')
+                    esj = ''.join(esj)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 清除连续空格
+            esj = esj.replace('  ', ' ')
+            esj = esj.replace('****', '')
+
+            return str(esj)
+
+    def remb(self, a):
+        if a != None and a != '':
+            zui = a.replace('*', '')
+
+            def containenglish(str0):  # 判断是否包含英文字母
+                import re
+                return bool(re.search('[a-zA-Za-zA-Z]', str0))
+
+            def is_contain_chinese(check_str):  # 判断是否包含中文字
+                for ch in check_str:
+                    if u'\u4e00' <= ch <= u'\u9fff':
+                        return True
+                return False
+
+            def is_contain_num(str0):  # 判断是否包含数字
+                import re
+                return bool(re.search('[0-90-9]', str0))
+
+            def is_contain_symbol(keyword):
+                if re.search(r"\W", keyword):
+                    return True
+                else:
+                    return False
+
+            def find_this(q, i):
+                result = q[i]
+                return result
+
+            def find_next(q, i):
+                result = q[i + 1]
+                return result
+
+            i = 0
+            while i <= len(zui) - 1:
+                if zui[i] == '¥' and not is_contain_symbol(str(zui[i - 1])):
+                    zui = list(zui)
+                    zui.insert(i, ' ')
+                    zui = ''.join(zui)
+                    i = i + 2
+                    continue
+                if zui[i] == '$' and not is_contain_symbol(str(zui[i - 1])):
+                    zui = list(zui)
+                    zui.insert(i, ' ')
+                    zui = ''.join(zui)
+                    i = i + 2
+                    continue
+                if zui[i] == "%":
+                    if zui[i - 1] == ' ':
+                        zui = list(zui)
+                        del zui[i - 1]
+                        zui = ''.join(zui)
+                        i = i - 1
+                        continue
+                    else:
+                        zui = list(zui)
+                        zui.insert(i + 1, ' ')
+                        zui = ''.join(zui)
+                        i = i + 2
+                        continue
+                if zui[i] == "°":
+                    if zui[i - 1] == ' ':
+                        zui = list(zui)
+                        del zui[i - 1]
+                        zui = ''.join(zui)
+                        i = i - 1
+                        continue
+                    else:
+                        zui = list(zui)
+                        zui.insert(i + 1, ' ')
+                        zui = ''.join(zui)
+                        i = i + 2
+                        continue
+                else:
+                    i = i + 1
+                    continue
+
+            i = 0
+            while i >= 0 and i < len(zui) - 1:
+                if is_contain_chinese(str(find_this(zui, i))) and containenglish(str(find_next(zui, i))):  # 从中文转英文
+                    zui = list(zui)
+                    zui.insert(i + 1, ' ')
+                    zui = ''.join(zui)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_this(zui, i))) and is_contain_num(str(find_next(zui, i))):  # 从中文转数字
+                    zui = list(zui)
+                    zui.insert(i + 1, ' ')
+                    zui = ''.join(zui)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(zui, i))) and is_contain_num(str(find_this(zui, i))):  # 从数字转中文
+                    zui = list(zui)
+                    zui.insert(i + 1, ' ')
+                    zui = ''.join(zui)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_this(zui, i))) and containenglish(str(find_next(zui, i))):  # 从数字转英文
+                    zui = list(zui)
+                    zui.insert(i + 1, ' ')
+                    zui = ''.join(zui)
+                    i = i + 1
+                    continue
+                if is_contain_num(str(find_next(zui, i))) and containenglish(str(find_this(zui, i))):  # 从英文转数字
+                    zui = list(zui)
+                    zui.insert(i + 1, ' ')
+                    zui = ''.join(zui)
+                    i = i + 1
+                    continue
+                if is_contain_chinese(str(find_next(zui, i))) and containenglish(str(find_this(zui, i))):  # 从英文转中文
+                    zui = list(zui)
+                    zui.insert(i + 1, ' ')
+                    zui = ''.join(zui)
+                    i = i + 1
+                    continue
+                else:
+                    i = i + 1
+                    continue
+
+            # 清除连续空格
+            zui = zui.replace('  ', ' ')
+            return str(zui)
+
+    def from_ext(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Open File", path1, "Markdown Files (*.md)")
+            if file_name != '':
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                patterna = re.compile(r'【.*?】')
+                resultp = patterna.findall(contend)
+                resultp = '\n\n'.join(resultp)
+                resultp = resultp.replace('【', '')
+                resultp = resultp.replace('】', '')
+                self.fromtext = resultp
+                self.btn_t5.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #0085FF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #FFFFFF''')
+                self.btn_t5.setText('Added')
+
+    def to_ext(self):
+        pathscr = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if pathscr != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Open File", pathscr, "Markdown Files (*.md)")
+            if file_name != '':
+                self.to = file_name
+                contm = codecs.open(file_name, 'r', encoding='utf-8').read()
+                patterna = re.compile(r'\n\n\n\n## References[\s\S]*')
+                resultp = patterna.findall(contm)
+                self.oric = ''.join(resultp)
+                a = re.sub(r"\n\n\n\n## References[\s\S]*", '', contm)
+                for i in range(10):
+                    a = a.replace('\r', '☆')
+                    a = a.replace('\n', '☆')
+                    a = a.replace('☆☆☆☆', '☆☆')
+                    a = a.replace('☆☆☆', '☆☆')
+                self.ori = a.replace('☆', '\n')
+                self.btn_t6.setStyleSheet('''
+                                                        border: 1px outset grey;
+                                                        background-color: #0085FF;
+                                                        border-radius: 4px;
+                                                        padding: 1px;
+                                                        color: #FFFFFF''')
+                self.btn_t6.setText('Added')
+
+    def start_ext(self):
+        with open(self.to, 'w', encoding='utf-8') as fp:
+            fp.write(self.ori + '\n\n' + self.fromtext + self.oric)
+        self.btn_t5.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #FFFFFF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #000000''')
+        self.btn_t5.setText('From')
+        self.btn_t6.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #FFFFFF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #000000''')
+        self.btn_t6.setText('To')
+        oldv = self.textii2.verticalScrollBar().value()
+        pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if pathend == '':
+            self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend = str(self.leii1.text()) + ".md"
+            fulldirend = os.path.join(pathend, tarnameend)
+            if self.leii1.text() != '':
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.textii2.setPlainText(contend)
+                self.textii2.verticalScrollBar().setValue(oldv)
+                if self.textii2.verticalScrollBar().maximum() != 0:
+                    proportion = self.textii2.verticalScrollBar().value() / self.textii2.verticalScrollBar().maximum()
+                    tar_pro = int(self.real2.verticalScrollBar().maximum() * proportion)
+                    self.real2.verticalScrollBar().setValue(tar_pro)
+        self.textii3.setPlainText('')
+
+    def openris(self):
+        home_dir = str(Path.home())
+        file_name, ok = QFileDialog.getOpenFileName(self, "Open File", home_dir,
+                                                    "RIS Files (*.ris)")
+        if file_name != '':
+            contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+            home_dir = str(Path.home())
+            tarname1 = "Documents"
+            fulldir1 = os.path.join(home_dir, tarname1)
+            if not os.path.exists(fulldir1):
+                os.makedirs(fulldir1)
+            tarname2 = 'Obsidien'
+            fulldir2 = os.path.join(fulldir1, tarname2)
+            if not os.path.exists(fulldir2):
+                os.makedirs(fulldir2)
+            tarname3 = 'Database'
+            fulldir3 = os.path.join(fulldir2, tarname3)
+            if not os.path.exists(fulldir3):
+                os.makedirs(fulldir3)
+            tarnamea = 'RIS'
+            fulldira = os.path.join(fulldir3, tarnamea)
+            if not os.path.exists(fulldira):
+                os.makedirs(fulldira)
+
+            contend = contend.replace(';;', '\n')
+
+            regex = r"^((?!\s\s-\s).)+$"
+            subst = "KW  - \\g<0>"
+            newdata = re.sub(regex, subst, contend, 0, re.MULTILINE)
+            newdata = newdata.replace('\r', '')
+            newdata = newdata.replace('KW  - \n', '\n')
+
+            ris_list = newdata.split('\n\n')
+            while '' in ris_list:
+                ris_list.remove('')
+            i = 0
+            while i >= 0 and i <= len(ris_list) - 1:
+                pattern0 = re.compile(r'ST  - (.*?)\n')
+                result0 = pattern0.findall(ris_list[i])
+                title = ''.join(result0)
+                tarnameb = 'Untitled.md'
+                fulldirb = os.path.join(fulldira, tarnameb)
+                if title != '':
+                    tarnameb = self.cleaninput(str(title).replace('ST  - ', '')) + '.md'
+                    fulldirb = os.path.join(fulldira, tarnameb)
+                    with open(fulldirb, 'a', encoding='utf-8') as f2:
+                        f2.write('')
+                if title == '':
+                    pattern02 = re.compile(r'TI  - (.*?)\n')
+                    result0 = pattern02.findall(ris_list[i])
+                    title2 = ''.join(result0)
+                    tarnameb = self.cleaninput(str(title2).replace('TI  - ', '')) + '.md'
+                    fulldirb = os.path.join(fulldira, tarnameb)
+                    with open(fulldirb, 'a', encoding='utf-8') as f2:
+                        f2.write('')
+
+                ris_each = ris_list[i].split('\n')
+                for m in range(len(ris_each)):
+                    if 'ST  - ' in ris_each[m]:
+                        part1 = '# Metadata\n- Title: ' + self.cleaninput(str(ris_each[m]).replace('ST  - ', ''))
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + '\n')
+                    if 'ST  - ' not in ris_list[i] and 'TI  - ' in ris_each[m]:
+                        part1 = '# Metadata\n- Title: ' + self.cleaninput(str(ris_each[m]).replace('TI  - ', ''))
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part1 + '\n')
+                for n in range(len(ris_each)):
+                    if 'AU  - ' in ris_each[n]:
+                        part2 = '\n- Authors: ' + str(ris_each[n]).replace('AU  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part2 + '\n')
+                for o in range(len(ris_each)):
+                    if 'AD  - ' in ris_each[o]:
+                        part3 = '\n- Institutes: ' + str(ris_each[o]).replace('AD  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part3)
+                for pp in range(len(ris_each)):
+                    if 'T2  - ' in ris_each[pp]:
+                        part4 = '\n- Publication: ' + str(ris_each[pp]).replace('T2  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part4 + '\n')
+                    if 'T2  - ' not in ris_list[i] and 'JF  - ' in ris_each[pp]:
+                        part4 = '\n- Publication: ' + str(ris_each[pp]).replace('JF  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part4 + '\n')
+                    if 'T2  - ' not in ris_list[i] and 'JF  - ' not in ris_list[i] and 'PB  - ' in ris_each[pp]:
+                        part4 = '\n- Publication: ' + str(ris_each[pp]).replace('PB  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part4 + '\n')
+                for q in range(len(ris_each)):
+                    if 'SP  - ' in ris_each[q]:
+                        part5 = '\n- Page range: ' + str(ris_each[q]).replace('SP  - ', '')
+                        if 'EP  - ' not in ris_list[i]:
+                            with open(fulldirb, 'a', encoding='utf-8') as f2:
+                                f2.write(part5 + '\n')
+                        if 'EP  - ' in ris_list[i]:
+                            with open(fulldirb, 'a', encoding='utf-8') as f2:
+                                f2.write(part5)
+                for qr in range(len(ris_each)):
+                    if 'EP  - ' in ris_each[qr]:
+                        part5 = '-' + str(ris_each[qr]).replace('EP  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part5 + '\n')
+                for r in range(len(ris_each)):
+                    if 'PY  - ' in ris_each[r]:
+                        part6 = '\n- Year: #AD' + str(ris_each[r]).replace('PY  - ', '').replace('/', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part6 + '\n')
+                for s in range(len(ris_each)):
+                    if 'VL  - ' in ris_each[s]:
+                        part8 = '\n- Vol / Mon: ' + str(ris_each[s]).replace('VL  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part8 + '\n')
+                for t in range(len(ris_each)):
+                    if 'IS  - ' in ris_each[t]:
+                        part9 = '\n- Vol / Mon: (' + str(ris_each[t]).replace('IS  - ', '') + ')'
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part9 + '\n')
+                for u in range(len(ris_each)):
+                    if 'KW  - ' in ris_each[u]:
+                        part10 = '\n- Tags: #' + str(ris_each[u]).replace('KW  - ', '')
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part10)
+                for v in range(len(ris_each)):
+                    if 'AB  - ' in ris_each[v]:
+                        part11 = '\n- Abstract: ' + str(ris_each[v]).replace('AB  - ', '') + ')'
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part11)
+                if fulldirb != '':
+                    half_scr = codecs.open(fulldirb, 'r', encoding='utf-8').read()
+                    pattern = re.compile(r'Title: (.*?)\n')
+                    result = pattern.findall(half_scr)
+                    result = ''.join(result)
+                    pretc = result.replace('Title: ', '')
+                    pretc = pretc.replace('\n', '')
+                    pretc = pretc.replace('[', '')
+                    pretc = pretc.replace(']', '')
+
+                    pattern2 = re.compile(r'Authors: (.*?)\n')
+                    result2 = pattern2.findall(half_scr)
+                    result2 = '、'.join(result2)
+                    pretc2 = result2.replace('Authors: ', '')
+                    pretc2 = pretc2.replace('\n', '')
+                    pretc2 = pretc2.replace('[', '')
+                    pretc2 = pretc2.replace(']', '')
+
+                    pattern4 = re.compile(r'Publication: (.*?)\n')
+                    result4 = pattern4.findall(half_scr)
+                    result4 = ''.join(result4)
+                    pretc4 = result4.replace('Publication: ', '')
+                    pretc4 = pretc4.replace('\n', '')
+                    pretc4 = pretc4.replace('[', '')
+                    pretc4 = pretc4.replace(']', '')
+
+                    pattern6 = re.compile(r'Year: (.*?)\n')
+                    result6 = pattern6.findall(half_scr)
+                    result6 = ''.join(result6)
+                    pretc6 = result6.replace('Year: ', '')
+                    pretc6 = pretc6.replace('\n', '')
+                    pretc6 = pretc6.replace('#AD', '')
+
+                    pattern7 = re.compile(r'Vol / Mon: (.*?)\n')
+                    result7 = pattern7.findall(half_scr)
+                    result7 = ''.join(result7)
+                    pretc7 = result7.replace('Vol / Mon: ', '')
+
+                    pattern11 = re.compile(r'Page range: (.*?)\n')
+                    result11 = pattern11.findall(half_scr)
+                    result11 = ''.join(result11)
+                    pretc11 = result11.replace('Page range: ', '')
+                    pretc11 = pretc11.replace('\n', '')
+
+                    if self.is_contain_chinese(pretc):
+                        part12 = '\n- ' + 'Citation: ' + str(pretc2) + ':《' + str(pretc) + '》,载《' + \
+                                  str(pretc4) + '》,' + str(pretc6) + ' 年第 ' + \
+                                  str(pretc7) + ' 期,第 ' + str(pretc11) + ' 页。'
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part12)
+                    if self.is_contain_english(pretc):
+                        part13 = '\n- ' + 'Citation: ' + str(pretc2).replace('、', ', ') + ', “' + str(pretc) + ',” *' + \
+                            str(pretc4) + '*, ' + str(pretc7) + ', ' + str(pretc6) + ', pp.' + \
+                            str(pretc11) + '.'
+                        with open(fulldirb, 'a', encoding='utf-8') as f2:
+                            f2.write(part13)
+
+                    remove2n = codecs.open(fulldirb, 'r', encoding='utf-8').read()
+                    rem = remove2n.replace('\n\n', '\n')
+                    with open(fulldirb, 'w', encoding='utf-8') as f2:
+                        f2.write(rem)
+
+                    partrispls = '\n\n---' + '\n\n# Notes'
+                    with open(fulldirb, 'a', encoding='utf-8') as f2:
+                        f2.write(partrispls)
+                i = i + 1
+                continue
+
+    def is_contain_english(self, str0):  # 判断是否包含英文字母
+        import re
+        return bool(re.search('[a-zA-Za-zA-Z]', str0))
+
+    def is_contain_chinese(self, check_str):  # 判断是否包含中文字
+        for ch in check_str:
+            if u'\u4e00' <= ch <= u'\u9fff':
+                return True
+        return False
+
+    def moveris(self):
+        home_dir = str(Path.home())
+        tarname11 = "Documents"
+        fulldir11 = os.path.join(home_dir, tarname11)
+        if not os.path.exists(fulldir11):
+            os.makedirs(fulldir11)
+        tarname22 = 'Obsidien'
+        fulldir22 = os.path.join(fulldir11, tarname22)
+        if not os.path.exists(fulldir22):
+            os.makedirs(fulldir22)
+        tarname33 = 'Database'
+        fulldir33 = os.path.join(fulldir22, tarname33)
+        if not os.path.exists(fulldir33):
+            os.makedirs(fulldir33)
+        tarnamea = 'RIS'
+        fulldira = os.path.join(fulldir33, tarnamea)
+        if not os.path.exists(fulldira):
+            os.makedirs(fulldira)
+
+        file_name, ok = QFileDialog.getOpenFileName(self, "Open File", fulldira, "Markdown Files (*.md)")
+        if file_name != '' and fulldira in file_name:
+            contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+
+            path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+            pattern = re.compile(r'Title: (.*?)\n')
+            result = pattern.findall(contend)
+            result = ''.join(result)
+            pretc = result.replace('Title: ', '')
+            pretc = pretc.replace('\n', '')
+            pretc = pretc.replace('[', '')
+            pretc = pretc.replace(']', '')
+            tarnameb = pretc + '.md'
+            fulldirb = os.path.join(path1, tarnameb)
+            if pretc != '':
+                with open(fulldirb, 'a', encoding='utf-8') as rism:
+                    rism.write(contend)
+
+            pattern = re.compile(r'Title: (.*?)\n')
+            result = pattern.findall(contend)
+            result = ''.join(result)
+            pretc = result.replace('Title: ', '')
+            pretc = pretc.replace('\n', '')
+            pretc = pretc.replace('[', '')
+            pretc = pretc.replace(']', '')
+            if '|' in pretc:
+                pass
+                patt = re.compile(r'\|(.*?)\]')
+                res2 = patt.findall(result)
+                res2 = ''.join(res2)
+                self.le1.setText(res2)
+            else:
+                self.le1.setText(pretc)
+
+            pattern2 = re.compile(r'Authors: (.*?)\n')
+            result2 = pattern2.findall(contend)
+            result2 = '、'.join(result2)
+            pretc2 = result2.replace('Authors: ', '')
+            pretc2 = pretc2.replace('\n', '')
+            pretc2 = pretc2.replace('[', '')
+            pretc2 = pretc2.replace(']', '')
+            self.le2.setText(pretc2)
+
+            pattern3 = re.compile(r'Institutes: (.*?)\n')
+            result3 = pattern3.findall(contend)
+            result3 = '、'.join(result3)
+            pretc3 = result3.replace('Institutes: ', '')
+            pretc3 = pretc3.replace('\n', '')
+            pretc3 = pretc3.replace('[', '')
+            pretc3 = pretc3.replace(']', '')
+            self.le7.setText(pretc3)
+
+            pattern4 = re.compile(r'Publication: (.*?)\n')
+            result4 = pattern4.findall(contend)
+            result4 = ''.join(result4)
+            pretc4 = result4.replace('Publication: ', '')
+            pretc4 = pretc4.replace('\n', '')
+            pretc4 = pretc4.replace('[', '')
+            pretc4 = pretc4.replace(']', '')
+            self.le3.setText(pretc4)
+
+            pattern5 = re.compile(r'Press: (.*?)\n')
+            result5 = pattern5.findall(contend)
+            result5 = ''.join(result5)
+            pretc5 = result5.replace('Press: ', '')
+            pretc5 = pretc5.replace('\n', '')
+            pretc5 = pretc5.replace('[', '')
+            pretc5 = pretc5.replace(']', '')
+            self.le3_1.setText(pretc5)
+
+            pattern6 = re.compile(r'Year: (.*?)\n')
+            result6 = pattern6.findall(contend)
+            result6 = ''.join(result6)
+            pretc6 = result6.replace('Year: ', '')
+            pretc6 = pretc6.replace('\n', '')
+            pretc6 = pretc6.replace('#AD', '')
+            self.le4.setText(pretc6)
+
+            pattern7 = re.compile(r'Vol / Mon: (.*?)\n')
+            result7 = pattern7.findall(contend)
+            result7 = ''.join(result7)
+            pretc7 = result7.replace('Vol / Mon: ', '')
+            pretc7 = pretc7.replace('\n', '')
+            self.le4_1.setText(pretc7)
+
+            pattern8 = re.compile(r'Tags: (.*?)\n')
+            result8 = pattern8.findall(contend)
+            result8 = '、'.join(result8)
+            pretc8 = result8.replace('Tags: ', '')
+            pretc8 = pretc8.replace('\n', '')
+            pretc8 = pretc8.replace('#', '')
+            pretc8 = pretc8.replace(' ', '、')
+            pretc8 = pretc8.replace('[', '')
+            pretc8 = pretc8.replace(']', '')
+            self.le5.setText(pretc8)
+
+            pattern9 = re.compile(r'From book: (.*?),')
+            result9 = pattern9.findall(contend)
+            result9 = ''.join(result9)
+            pretc9 = result9.replace('From book: ', '')
+            pretc9 = pretc9.replace(',', '')
+            pretc9 = pretc9.replace('[', '')
+            pretc9 = pretc9.replace(']', '')
+            self.le8.setText(pretc9)
+
+            pattern10 = re.compile(r'Chapter (.*?),')
+            result10 = pattern10.findall(contend)
+            result10 = ''.join(result10)
+            pretc10 = result10.replace(', Chapter ', '')
+            pretc10 = pretc10.replace(',', '')
+            pretc10 = pretc10.replace('[', '')
+            pretc10 = pretc10.replace(']', '')
+            self.le9.setText(pretc10)
+
+            pattern11 = re.compile(r'Page range: (.*?)\n')
+            result11 = pattern11.findall(contend)
+            result11 = ''.join(result11)
+            pretc11 = result11.replace(', Page range: ', '')
+            pretc11 = pretc11.replace('\n', '')
+            self.le10.setText(pretc11)
+
+            if self.le1.text() != '':
+                self.text.setPlainText(contend)
+                self.widget0.clear()
+                self.widget0.addItems(['Append at the end (default)'])
+                path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+                tarname1 = str(self.le1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                pattern = re.compile(r'## (.*?)\n')
+                result = pattern.findall(maintxt)
+                result = '☆'.join(result)
+                result = result.replace('#', '')
+                result = result.replace('# ', '')
+                result = result.replace('Q/P: ', '')
+                result = result.split('☆')
+                for i in range(len(result)):
+                    result[i] = 'After ' + result[i]
+                    result[i] = ''.join(result[i])
+                self.widget0.addItems(result)
+                self.widget0.setCurrentIndex(0)
+
+                with open('path_ttl.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(pretc)
+
+                os.remove(fulldir1)
+                os.remove(file_name)
+
+    def webconmode_on(self):
+        home_dir = str(Path.home())
+        tarname1 = "Documents"
+        fulldir1 = os.path.join(home_dir, tarname1)
+        if not os.path.exists(fulldir1):
+            os.makedirs(fulldir1)
+        tarname2 = 'Obsidien'
+        fulldir2 = os.path.join(fulldir1, tarname2)
+        if not os.path.exists(fulldir2):
+            os.makedirs(fulldir2)
+        tarname3 = 'Database'
+        fulldir3 = os.path.join(fulldir2, tarname3)
+        if not os.path.exists(fulldir3):
+            os.makedirs(fulldir3)
+        tarnamea = 'Conference'
+        fulldira = os.path.join(fulldir3, tarnamea)
+        if not os.path.exists(fulldira):
+            os.makedirs(fulldira)
+
+        self.read_t3.setVisible(False)
+        self.read_t8.setVisible(False)
+        self.web_t3.setVisible(True)
+        self.web_t8.setVisible(True)
+        self.btn_t9.setStyleSheet('''
+            border: 1px outset grey;
+            background-color: #0085FF;
+            border-radius: 4px;
+            padding: 1px;
+            color: #FFFFFF''')
+        self.btn_t9.setText('Turned on!')
+        self.lblread_2.setText('Authors/Speakers:')
+
+    def webconmode_off(self):
+        self.read_t3.setVisible(True)
+        self.read_t8.setVisible(True)
+        self.web_t3.setVisible(False)
+        self.web_t8.setVisible(False)
+        self.btn_t9.setStyleSheet('''
+            border: 1px outset grey;
+            background-color: #FFFFFF;
+            border-radius: 4px;
+            padding: 1px;
+            color: #000000''')
+        self.btn_t9.setText('Turn on!')
+        self.leweb3.clear()
+        self.leweb8.clear()
+        self.leweb9.clear()
+        self.leweb10.clear()
+        self.lblread_2.setText('Authors:')
+
+    def showlist(self):
+        a = True
+        a2 = False
+        b = '🔼'
+        if not self.read_t1.isVisible():
+            a = True
+            b = '🔼'
+        if self.read_t1.isVisible():
+            a = False
+            b = '🔽'
+        self.read_t1.setVisible(a)
+        self.read_t2.setVisible(a)
+        self.read_t7.setVisible(a)
+        self.read_t3.setVisible(a)
+        self.read_t8.setVisible(a)
+        self.read_t4.setVisible(a)
+        self.read_t5.setVisible(a)
+        self.lbltool06.setVisible(a)
+        self.tool8.setVisible(a)
+        self.btnx4.setText(b)
+        if self.btn_t9.text() == 'Turned on!':
+            self.web_t3.setVisible(a)
+            self.web_t8.setVisible(a)
+            self.read_t3.setVisible(a2)
+            self.read_t8.setVisible(a2)
+
+    def openascr(self):
+        self.widgettem.setCurrentIndex(0)
+        pathscr = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if pathscr == '':
+            self.textii2.setPlainText('Please check your path settings!')
+        if pathscr != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Open File", pathscr, "Markdown Files (*.md);;LaTeX Files (*.tex)")
+            if file_name != '':
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                if pathscr in file_name:
+                    if '.md' in file_name:
+                        patterna = re.compile(r'\[.*<e>\n')
+                        resultp = patterna.findall(contend)
+                        resultp = ''.join(resultp)
+                        resultp = resultp.rstrip('\n')
+                        resultp = resultp.replace('<e>', '')
+                        resultp = resultp.replace('<e>\n<e>', '')
+                        resultp = resultp.replace('<e><e>', '')
+                        with open('path_ref.txt', 'w', encoding='utf-8') as fp:
+                            fp.write(resultp)
+
+                        pattern = re.compile(r'<!--Title: (.*?)-->')
+                        result = pattern.findall(contend)
+                        result = ''.join(result)
+                        pretc = result.replace('<!--Title: ', '')
+                        pretc = pretc.replace('-->', '')
+                        pretc = pretc.replace('[', '')
+                        pretc = pretc.replace(']', '')
+                        self.leii1.setText(pretc)
+
+                        if self.leii1.text() != '':
+                            self.textii2.setPlainText(contend)
+                            self.btn_a.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #0085FF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #FFFFFF''')
+                            self.btn_a.setText('Created')
+                            self.leii1.setEnabled(False)
+                            with open('path_ste.txt', 'w', encoding='utf-8') as f0:
+                                f0.write(self.leii1.text())
+                        if self.leii1.text() == '':
+                            self.textii2.setPlainText('Not a standard file produced by Strawberry. \nCan not find title within.')
+                    if '.tex' in file_name:
+                        patterna = re.compile(r'title\{.*}')
+                        resultq = patterna.findall(contend)
+                        resultq = ''.join(resultq)
+                        resultq = resultq.replace('title{', '')
+                        resultq = resultq.replace('}', '')
+                        resultq = resultq.replace('[', '')
+                        resultq = resultq.replace(']', '')
+                        self.leii1.setText(resultq)
+
+                        if self.leii1.text() != '':
+                            self.textii3.setPlainText(contend)
+                            self.btn_a.setStyleSheet('''
+                                            border: 1px outset grey;
+                                            background-color: #0085FF;
+                                            border-radius: 4px;
+                                            padding: 1px;
+                                            color: #FFFFFF''')
+                            self.btn_a.setText('Created')
+                            self.leii1.setEnabled(False)
+                            with open('path_std.txt', 'w', encoding='utf-8') as f0:
+                                f0.write(self.leii1.text())
+                        if self.leii1.text() == '':
+                            self.textii3.setPlainText('Not a standard file produced by Strawberry. \nCan not find title within.')
+                    if self.leii1.text() != '':
+                        self.choosepart.clear()
+                        self.choosepart.addItems(['Append at the end (default)'])
+                        pathscr = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+                        tarname1 = str(self.leii1.text()) + ".md"
+                        fulldir1 = os.path.join(pathscr, tarname1)
+                        maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                        pattern = re.compile(r'## (.*?)\n')
+                        result = pattern.findall(maintxt)
+                        result = '☆'.join(result)
+                        result = result.replace('#', '')
+                        result = result.replace('# ', '')
+                        result = result.replace('Q/P: ', '')
+                        result = result.split('☆')
+                        if 'References ' in result:
+                            result.remove('References ')
+                        for i in range(len(result)):
+                            result[i] = 'After ' + result[i]
+                            result[i] = ''.join(result[i])
+                        self.choosepart.addItems(result)
+                if pathscr not in file_name:
+                    self.textii2.setPlainText('The file is not under your script path.')
+                    self.leii1.clear()
+
+    def createscr(self):
+        if self.btn_a.text() != 'Created' and self.leii1.text() != '':
+            path3 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if path3 == '':
+                self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarname4 = str(self.leii1.text()) + ".md"
+                fulldir4 = os.path.join(path3, tarname4)
+                parta = '<document-start>'
+                partb = '\n<!--Title: ' + str(self.leii1.text()) + '-->'
+                partc = '\n\n# ' + str(self.leii1.text())
+                with open(fulldir4, 'a', encoding='utf-8') as f3:
+                    f3.write(parta + partb + partc)
+                self.btn_a.setStyleSheet('''
+                                    border: 1px outset grey;
+                                    background-color: #0085FF;
+                                    border-radius: 4px;
+                                    padding: 1px;
+                                    color: #FFFFFF''')
+                self.btn_a.setText('Created')
+                self.leii1.setEnabled(False)
+                with open('path_ste.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(self.leii1.text())
+
+            with open('path_ref.txt', 'w', encoding='utf-8') as citpat:
+                citpat.write('')
+
+            pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.leii1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.textii2.setPlainText(contend)
+                self.textii2.ensureCursorVisible()  # 游标可用
+                cursor = self.textii2.textCursor()  # 设置游标
+                pos = len(self.textii2.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.textii2.setTextCursor(cursor)  # 滚动到游标位置
+
+    def addinssc(self):
+        poslast = 0
+        path3 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if path3 == '':
+            self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarname4 = str(self.leii1.text()) + ".md"
+            fulldir4 = os.path.join(path3, tarname4)
+            with open(fulldir4, 'a', encoding='utf-8') as f0:
+                f0.write('')
+            contm = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+            a = re.sub(r"\n\n\n\n## References[\s\S]*", '', contm)
+            for i in range(10):
+                a = a.replace('\r', '☆')
+                a = a.replace('\n', '☆')
+                a = a.replace('☆☆☆☆', '☆☆')
+                a = a.replace('☆☆☆', '☆☆')
+                # a = a.replace('☆☆', '☆☆')
+            a = a.replace('☆', '\n')
+            parta = ''
+            if self.textii1.toPlainText() !='':
+                if contm != '':
+                    parta = '\n\n' + str(self.default_clean(self.textii1.toPlainText()))
+                if contm == '':
+                    parta = str(self.default_clean(self.textii1.toPlainText()))
+            if self.textii1.toPlainText() == '':
+                parta = ''
+            partb = '\n\n\n\n' + '## References '
+            partc = ''
+            tcy = codecs.open('path_ref.txt', 'r', encoding='utf-8').readlines()
+            i = 0
+            while i >= 0 and i <= len(tcy) - 1:
+                tcy[i] = tcy[i] + '<e>'
+                tcy[i] = ''.join(tcy[i])
+                tcy[i] = tcy[i].replace('\n', '')
+                i = i + 1
+                continue
+            tcq = ''.join(tcy)
+            tcq = tcq.replace('\n', '')
+            tcq = tcq.replace('<e>', '<e>\n')
+            tcq = tcq.rstrip('\n')
+            qiam = codecs.open('path_ref.txt', 'r', encoding='utf-8').read()
+            if qiam != '':
+                partc = '\n\n' + tcq
+            if qiam == '':
+                partc = '\n' + tcq
+            partd = '\n\n<document-end>'
+
+            get_ori = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+            get_rst = codecs.open('path_pat.txt', 'r', encoding='utf-8').read()
+            get_ori = get_ori.replace(get_rst, '')
+            get_ori = get_ori.rstrip('\n')
+            part_z = get_ori
+            part_n = '\n\n' + get_rst
+
+            if self.leii1.text() != '':
+                last = int(self.choosepart.count() - 1)
+                if self.choosepart.currentIndex() == 0 or self.choosepart.currentIndex() == last:
+                    poslast = len(partb + partc + partd)
+                    with open(fulldir4, 'w', encoding='utf-8') as f3:
+                        f3.write(a + parta + partb + partc + partd)
+                if self.choosepart.currentIndex() != 0 and self.choosepart.currentIndex() != last:
+                    with open(fulldir4, 'w', encoding='utf-8') as f1:
+                        f1.write(part_z + parta + part_n)
+
+                itemold = self.choosepart.currentText()
+                self.choosepart.clear()
+                self.choosepart.addItems(['Append at the end (default)'])
+                pathscr = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+                tarname1 = str(self.leii1.text()) + ".md"
+                fulldir1 = os.path.join(pathscr, tarname1)
+                maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                pattern = re.compile(r'## (.*?)\n')
+                result = pattern.findall(maintxt)
+                result = '☆'.join(result)
+                if result != '':
+                    result = result.replace('#', '')
+                    result = result.replace('# ', '')
+                    result = result.replace('Q/P: ', '')
+                    result = result.split('☆')
+                    if 'References ' in result:
+                        result.remove('References ')
+                    for i in range(len(result)):
+                        result[i] = 'After ' + result[i]
+                        result[i] = ''.join(result[i])
+                    self.choosepart.addItems(result)
+                    if itemold in result:
+                        itemnub = result.index(itemold) + 1
+                        self.choosepart.setCurrentIndex(itemnub)
+                    if itemold not in result:
+                        self.choosepart.setCurrentIndex(0)
+
+        pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+        if pathend == '':
+            self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend = str(self.leii1.text()) + ".md"
+            fulldirend = os.path.join(pathend, tarnameend)
+            contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+            posnu = codecs.open('path_pat.txt', 'r', encoding='utf-8').read()
+            self.textii2.setPlainText(contend)
+            self.textii2.ensureCursorVisible()  # 游标可用
+            cursor = self.textii2.textCursor()  # 设置游标
+            pos = len(self.textii2.toPlainText())
+            if posnu != '':
+                pos = len(self.textii2.toPlainText()) - len(posnu)  # 获取文本尾部的位置
+            if posnu == '':
+                pos = len(self.textii2.toPlainText()) - poslast
+            cursor.setPosition(pos)  # 游标位置设置为尾部
+            self.textii2.setTextCursor(cursor)  # 滚动到游标位置
+            if self.textii2.verticalScrollBar().maximum() != 0:
+                proportion = self.textii2.verticalScrollBar().value() / self.textii2.verticalScrollBar().maximum()
+                tar_pro = int(self.real2.verticalScrollBar().maximum() * proportion)
+                self.real2.verticalScrollBar().setValue(tar_pro)
+
+        self.textii1.clear()
+
+    def addcit(self):
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        home_dir = str(Path.home())
+        tarname11 = "Documents"
+        fulldir11 = os.path.join(home_dir, tarname11)
+        if not os.path.exists(fulldir11):
+            os.makedirs(fulldir11)
+        tarname22 = 'Obsidien'
+        fulldir22 = os.path.join(fulldir11, tarname22)
+        if not os.path.exists(fulldir22):
+            os.makedirs(fulldir22)
+        tarname33 = 'Database'
+        fulldir33 = os.path.join(fulldir22, tarname33)
+        if not os.path.exists(fulldir33):
+            os.makedirs(fulldir33)
+        tarnamea = 'RIS'
+        fulldira = os.path.join(fulldir33, tarnamea)
+        if not os.path.exists(fulldira):
+            os.makedirs(fulldira)
+
+        if path1 != '' and self.leii1.text() != '':
+            file_name, ok = QFileDialog.getOpenFileName(self, "Open File", path1, "Markdown Files (*.md)")
+            if file_name != '' and (path1 in file_name or fulldira in file_name):
+                contend = codecs.open(file_name, 'r', encoding='utf-8').read()
+                pattern6 = re.compile(r'Citation: (.*?)\n')
+                result6 = pattern6.findall(contend)
+                result6 = ''.join(result6)
+                pretc6 = result6.replace('Citation: ', '')
+                pretc6 = pretc6.replace('\n', '')
+                pretc6 = pretc6.replace('[[', '')
+                pretc6 = pretc6.replace(']]', '')
+                oldref = codecs.open('path_ref.txt', 'r', encoding='utf-8').read()
+                pretc7 = '0'
+                if oldref != '':
+                    pattern7 = re.compile(r'\[.\d*\]')
+                    result7 = pattern7.findall(oldref)
+                    i = 0
+                    while i >= 0 and i <= len(result7) - 1:
+                        result7[i] = result7[i].replace('[^', '')
+                        result7[i] = result7[i].replace(']', '')
+                        result7[i] = ''.join(result7[i])
+                        i = i + 1
+                        continue
+                    result7.sort(key=int, reverse=True)
+                    pretc7 = str(result7[0])
+                if oldref == '':
+                    pretc7 = '0'
+                if self.leii2.text() != '':
+                    if pretc6 != '':
+                        partt1 = '\n[^' + str(self.leii2.text()) + ']: ' + pretc6
+                        with open('path_ref.txt', 'a', encoding='utf-8') as citpat:
+                            citpat.write(partt1)
+                    if pretc6 == '':
+                        partt1 = '\n[^' + str(self.leii2.text()) + ']: ' + 'Cannot find citation for ' + file_name
+                        with open('path_ref.txt', 'a', encoding='utf-8') as citpat:
+                            citpat.write(partt1)
+                if self.leii2.text() == '':
+                    # tarnumb = '1'
+                    if pretc7 == '0':
+                        tarnumb = '1'
+                        if pretc6 != '':
+                            partt1 = '[^' + str(tarnumb) + ']: ' + pretc6
+                            with open('path_ref.txt', 'a', encoding='utf-8') as citpat:
+                                citpat.write(partt1)
+                        if pretc6 == '':
+                            partt1 = '[^' + str(tarnumb) + ']: ' + 'Cannot find citation for ' + file_name
+                            with open('path_ref.txt', 'a', encoding='utf-8') as citpat:
+                                citpat.write(partt1)
+                    if pretc7 != '0':
+                        tarnumb = str(int(pretc7) + 1)
+                        if pretc6 != '':
+                            partt1 = '\n[^' + str(tarnumb) + ']: ' + pretc6
+                            with open('path_ref.txt', 'a', encoding='utf-8') as citpat:
+                                citpat.write(partt1)
+                        if pretc6 == '':
+                            partt1 = '\n[^' + str(tarnumb) + ']: ' + 'Cannot find citation for ' + file_name
+                            with open('path_ref.txt', 'a', encoding='utf-8') as citpat:
+                                citpat.write(partt1)
+
+            path3 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if path3 == '':
+                self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            if path3 != '' and file_name != '' and (path1 in file_name or fulldira in file_name):
+                tarname4 = str(self.leii1.text()) + ".md"
+                fulldir4 = os.path.join(path3, tarname4)
+                with open(fulldir4, 'a', encoding='utf-8') as f0:
+                    f0.write('')
+                contm = codecs.open(fulldir4, 'r', encoding='utf-8').read()
+                a = re.sub(r"\[.*<e>\n", '', contm)
+                a = re.sub(r"\n\n\n\n", '', a)
+                a = re.sub(r"## References \n\n", '', a)
+                a = re.sub(r"\n<document-end>", '', a)
+                for i in range(10):
+                    a = a.replace('\r', '☆')
+                    a = a.replace('\n', '☆')
+                    a = a.replace('☆☆☆☆', '☆☆')
+                    a = a.replace('☆☆☆', '☆☆')
+                a = a.replace('☆', '\n')
+                partb = '\n\n\n\n' + '## References '
+                tcy = codecs.open('path_ref.txt', 'r', encoding='utf-8').readlines()
+                i = 0
+                while i >= 0 and i <= len(tcy) - 1:
+                    tcy[i] = tcy[i] + '<e>'
+                    tcy[i] = ''.join(tcy[i])
+                    tcy[i] = tcy[i].replace('\n', '')
+                    i = i + 1
+                    continue
+                tcq = ''.join(tcy)
+                tcq = tcq.replace('\n', '')
+                tcq = tcq.replace('<e>', '<e>\n')
+                tcq = tcq.rstrip('\n')
+                partc = '\n\n' + tcq
+                partd = '\n\n<document-end>'
+                if self.leii1.text() != '':
+                    with open(fulldir4, 'w', encoding='utf-8') as f3:
+                        f3.write(a + partb + partc + partd)
+
+            pathend = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if pathend == '':
+                self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                tarnameend = str(self.leii1.text()) + ".md"
+                fulldirend = os.path.join(pathend, tarnameend)
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.textii2.setPlainText(contend)
+                self.textii2.ensureCursorVisible()  # 游标可用
+                cursor = self.textii2.textCursor()  # 设置游标
+                pos = len(self.textii2.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.textii2.setTextCursor(cursor)  # 滚动到游标位置
+
+            self.leii2.clear()
+
+    def clinp(self):
+        self.textii1.clear()
+        self.textii2.clear()
+        self.textii3.clear()
+        self.leii1.clear()
+        with open('path_ref.txt', 'w', encoding='utf-8') as citpat:
+            citpat.write('')
+        with open('path_lat.txt', 'w', encoding='utf-8') as reflat:
+            reflat.write('')
+        self.btn_a.setStyleSheet('''
+                border: 1px outset grey;
+                background-color: #FFFFFF;
+                border-radius: 4px;
+                padding: 1px;
+                color: #000000''')
+        self.btn_a.setText('Create')
+        self.leii1.setEnabled(True)
+        with open('path_ste.txt', 'w', encoding='utf-8') as r0:
+            r0.write('')
+        with open('path_std.txt', 'w', encoding='utf-8') as r1:
+            r1.write('')
+        self.widgettem.setCurrentIndex(0)
+        self.choosepart.clear()
+        self.choosepart.addItems(['Append at the end (default)'])
+        with open('path_pat.txt', 'w', encoding='utf-8') as r1:
+            r1.write('')
+
+    def save1(self):
+        oldv = self.text.verticalScrollBar().value()
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if path1 == '':
+            self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            pattern = re.compile(r'Title: (.*?)\n')
+            result = pattern.findall(self.text.toPlainText())
+            result = ''.join(result)
+            pretc = result.replace('Title: ', '')
+            pretc = pretc.replace('\n', '')
+            pretc = pretc.replace('[', '')
+            pretc = pretc.replace(']', '')
+            oldnam = codecs.open('path_ttl.txt', 'r', encoding='utf-8').read()
+            if oldnam != pretc:
+                self.le1.setText(pretc)
+            tarname1 = str(self.le1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            saved = self.text.toPlainText()
+            if self.le1.text() != '' and self.text.toPlainText() != '':
+                with open(fulldir1, 'w', encoding='utf-8') as f1:
+                    f1.write(saved)
+
+        pathend = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        if pathend == '':
+            self.text.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend = str(self.le1.text()) + ".md"
+            fulldirend = os.path.join(pathend, tarnameend)
+            if self.le1.text() != '':
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text.setPlainText(contend)
+                self.text.verticalScrollBar().setValue(oldv)
+                if self.text.verticalScrollBar().maximum() != 0:
+                    proportion = self.text.verticalScrollBar().value() / self.text.verticalScrollBar().maximum()
+                    tar_pro = int(self.real1.verticalScrollBar().maximum() * proportion)
+                    self.real1.verticalScrollBar().setValue(tar_pro)
+
+        itemold = self.widget0.currentText()
+        self.widget0.clear()
+        self.widget0.addItems(['Append at the end (default)'])
+        path1 = codecs.open('path_art.txt', 'r', encoding='utf-8').read()
+        tarname1 = str(self.le1.text()) + ".md"
+        fulldir1 = os.path.join(path1, tarname1)
+        if self.le1.text() != '':
+            maintxt = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+            pattern = re.compile(r'## (.*?)\n')
+            result = pattern.findall(maintxt)
+            result = '☆'.join(result)
+            if result != '':
+                result = result.replace('#', '')
+                result = result.replace('# ', '')
+                result = result.replace('Q/P: ', '')
+                result = result.split('☆')
+                for i in range(len(result)):
+                    result[i] = 'After ' + result[i]
+                    result[i] = ''.join(result[i])
+                self.widget0.addItems(result)
+                if itemold in result:
+                    itemnub = result.index(itemold) + 1
+                    self.widget0.setCurrentIndex(itemnub)
+                if itemold not in result:
+                    self.widget0.setCurrentIndex(0)
+
+    def save2(self):
+        path1 = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+        if path1 == '':
+            self.text_s2.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarname1 = str(self.lec1.text()) + ".md"
+            fulldir1 = os.path.join(path1, tarname1)
+            saved = self.text_s2.toPlainText()
+            if self.lec1.text() != '' and self.text_s2.toPlainText() != '':
+                with open(fulldir1, 'w', encoding='utf-8') as f1:
+                    f1.write(saved)
+
+        pathend = codecs.open('path_con.txt', 'r', encoding='utf-8').read()
+        if pathend == '':
+            self.text_s2.setPlainText('Some directory is empty. Please go to preferences and check!')
+        else:
+            tarnameend = str(self.lec1.text()) + ".md"
+            fulldirend = os.path.join(pathend, tarnameend)
+            if self.lec1.text() != '':
+                contend = codecs.open(fulldirend, 'r', encoding='utf-8').read()
+                self.text_s2.setPlainText(contend)
+                self.text_s2.ensureCursorVisible()  # 游标可用
+                cursor = self.text_s2.textCursor()  # 设置游标
+                pos = len(self.text_s2.toPlainText())  # 获取文本尾部的位置
+                cursor.setPosition(pos)  # 游标位置设置为尾部
+                self.text_s2.setTextCursor(cursor)  # 滚动到游标位置
+
+    def saveinsp(self):
+        if self.leii1.text() != '' and self.textii2.toPlainText() != '':
+            path1 = codecs.open('path_scr.txt', 'r', encoding='utf-8').read()
+            if path1 == '':
+                self.textii2.setPlainText('Some directory is empty. Please go to preferences and check!')
+            else:
+                pattern = re.compile(r'<!--Title: (.*?)-->')
+                result = pattern.findall(self.textii2.toPlainText())
+                result = ''.join(result)
+                okio = result.replace('<!--Title: ', '')
+                okio = okio.replace('-->', '')
+                okio = okio.replace('[', '')
+                okio = okio.replace(']', '')
+                oldnam = codecs.open('path_ste.txt', 'r', encoding='utf-8').read()
+                if oldnam != okio:
+                    self.leii1.setText(okio)
+                with open('path_std.txt', 'w', encoding='utf-8') as f0:
+                    f0.write(self.leii1.text())
+                tarname1 = str(self.leii1.text()) + ".md"
+                fulldir1 = os.path.join(path1, tarname1)
+                saved = self.textii2.toPlainText()
+                with open(fulldir1, 'w', encoding='utf-8') as f1:
+                    f1.write(saved)
+                oldtext = codecs.open(fulldir1, 'r', encoding='utf-8').read()
+                oldtext = oldtext.replace('[[', '')
+                oldtext = oldtext.replace(']]', '')
+                pattern = re.compile(r'<!--Title: (.*?)-->')
+                result = pattern.findall(oldtext)
+                result = ''.join(result)
+                pretc = result.replace('<!--Title: ', '')
+                prettle = pretc.replace('-->', '')
+                part_a = '''%!TEX program = xelatex
+% 完整编译: xelatex -> biber/bibtex -> xelatex -> xelatex
+\\documentclass[lang=cn,11pt,a4paper]{elegantpaper}'''
+                if self.widgettem.currentIndex() == 1:
+                    part_a = '''%!TEX program = pdflatex
+% Full chain: pdflatex -> biber/bibtex -> pdflatex -> pdflatex
+\\documentclass[11pt,en]{elegantpaper}'''
+                if self.widgettem.currentIndex() == 2:
+                    part_a = '''%!TEX program = xelatex
+\\documentclass[cn,hazy,blue,14pt,screen]{elegantnote}'''
+                if self.widgettem.currentIndex() == 3:
+                    part_a = '''%!TEX program = xelatex
+\\documentclass[en,hazy,screen,blue,14pt]{elegantnote}'''
+                if self.widgettem.currentIndex() == 4:
+                    part_a = '''\\documentclass[conference]{IEEEtran}
+\\IEEEoverridecommandlockouts
+
+\\usepackage{cite}
+\\usepackage{amsmath,amssymb,amsfonts}
+\\usepackage{algorithmic}
+\\usepackage{graphicx}
+\\usepackage{textcomp}
+\\usepackage{xcolor}
+\\def\\BibTeX{{\\rm B\\kern-.05em{\\sc i\\kern-.025em b}\\kern-.08em
+    T\\kern-.1667em\\lower.7ex\\hbox{E}\\kern-.125emX}}
+\\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 5:
+                    part_a = '''%!TEX program = xelatex
+\\documentclass[a4paper,12pt]{article}
+\\usepackage[left=2.2cm,right=2.2cm,top=2.0cm,bottom=2.5cm,foot=0.7cm,headsep=0.5cm]{geometry}%页边距设置
+\\usepackage[UTF8, scheme = plain]{ctex}%UTF8编译中文
+\\usepackage{times}\\usepackage{mathptmx}%数学公式字体time
+\\usepackage{multicol}%文本栏数,例如:双栏
+\\usepackage{color}%颜色宏包
+\\usepackage{enumerate}
+\\usepackage{colortbl}%颜色宏包
+\\usepackage{cite}%引用文献
+\\newcommand{\\ucite}[1]{\\textsuperscript{\\cite{#1}}}
+\\usepackage{palatino}%美赛英文字体
+\\usepackage[font=small,labelfont=bf]{caption}%[font=small,labelfont=bf,labelsep=none]
+\\usepackage{lipsum}%引入例子
+\\usepackage{journalCNpicins}%图文并排
+\\usepackage{booktabs}%三线表
+\\usepackage{tabularx}%表格环境
+\\usepackage{multirow}%表格并列
+\\usepackage[
+                       colorlinks,
+                       linkcolor=red,
+                       anchorcolor=blue,
+                       citecolor=blue]{hyperref}%超链接设置
+\\usepackage{url}%网址宏包
+\\usepackage{bm,amsmath,amsfonts}%数学公式及字体加粗
+\\usepackage{amssymb}%数学符号
+\\usepackage{graphicx}%图片环境
+\\usepackage{float}%图片强制固定H
+%每行间距
+\\baselineskip 12pt 
+%%自定义命令
+\\input{journalCNdef}%文本格式设置
+\\usepackage[hang,flushmargin]{footmisc}
+\\usepackage{zhnumber}
+\\renewcommand\\thesection{\\zhnum{section}、\\hspace{-1em}}
+\\renewcommand\\thesubsection {(\\zhnum{subsection})\\hspace{-1em}}
+\\renewcommand{\\thesubsubsection}{\\hspace{0.5em}\\arabic{subsubsection}.\\hspace{-0.5em}}
+\\begin{document}
+\\input{journalCNdef2}%脚注等格式设置
+\\renewcommand{\\thefootnote}{\\arabic{footnote}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 6:
+                    part_a = '''% !Mode:: "TeX:UTF-8"
+% !TEX program  = XeLaTeX
+\\documentclass[aspectratio=169]{beamer} % 设置长宽比为 16:9
+\\usepackage{ctex, hyperref}
+\\usepackage[T1]{fontenc}
+
+% other packages
+\\usepackage{latexsym,amsmath,xcolor,multicol,booktabs,calligra}
+\\usepackage{graphicx,pstricks,listings,stackengine}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 7:
+                    part_a = '''\\documentclass[11pt,a4paper]{article}
+\\usepackage{CJK}
+\\usepackage{type1cm}
+\\usepackage{times}
+\\usepackage[marginal]{footmisc}
+\\usepackage{indentfirst}
+\\setlength{\\parindent}{2em}
+%\\renewcommand{\\thefootnote}{}
+\\begin{CJK*}{UTF8}{gbsn}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+
+                part_b = '\n\n' + '''\\title{''' + prettle + '}'
+                if self.widgettem.currentIndex() == 4:
+                    part_b = '\n\n' + '\\title{' + prettle + '*\\thanks{Special thanks to funding agency here. If none, delete this.}}'
+                if self.widgettem.currentIndex() == 5:
+                    part_b = '\n\n' + '\\SEC{\\songti  ' + prettle + '}'
+                if self.widgettem.currentIndex() == 6:
+                    part_b = '\n\n' + '\\title{' + prettle + '}'
+                if self.widgettem.currentIndex() == 7:
+                    part_b = '\n\n' + '\\title{\\textbf{' + prettle + '}}'
+
+                part_c = '\n' + '''\\author{人名}
+\\institute{单位}
+\\date{}
+    
+    
+% 本文档命令
+\\usepackage{array}
+\\newcommand{\\ccr}[1]{\\makecell{{\\color{#1}\\rule{1cm}{1cm}}}}
+\\usepackage{zhnumber}
+\\renewcommand\\thesection{\\zhnum{section}、\\hspace{-1em}}
+\\renewcommand\\thesubsection {(\\zhnum{subsection})\\hspace{-1em}}
+\\renewcommand{\\thesubsubsection}{\\hspace{0.5em}\\arabic{subsubsection}.\\hspace{-0.5em}}
+    
+\\begin{document}
+    
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+\\maketitle
+    
+\\begin{abstract}
+文字。
+\\keywords{关键词1,关键词2}
+\\end{abstract}
+    
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'''
+                if self.widgettem.currentIndex() == 1:
+                    part_c = '\n' + '''\\author{Name}
+\\institute{Institute}
+\\date{}
\ No newline at end of file