pyeasyphd 0.4.42__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyeasyphd/.python-version +1 -0
- pyeasyphd/Main.sublime-menu +43 -0
- pyeasyphd/__init__.py +5 -0
- pyeasyphd/data/templates/csl/apa-no-ampersand.csl +2183 -0
- pyeasyphd/data/templates/csl/apa.csl +2133 -0
- pyeasyphd/data/templates/csl/ieee.csl +512 -0
- pyeasyphd/data/templates/tex/Article.tex +38 -0
- pyeasyphd/data/templates/tex/Article_Header.tex +29 -0
- pyeasyphd/data/templates/tex/Article_Tail.tex +3 -0
- pyeasyphd/data/templates/tex/Beamer_Header.tex +79 -0
- pyeasyphd/data/templates/tex/Beamer_Tail.tex +14 -0
- pyeasyphd/data/templates/tex/Style.tex +240 -0
- pyeasyphd/data/templates/tex/TEVC_Header.tex +52 -0
- pyeasyphd/data/templates/tex/TEVC_Tail.tex +4 -0
- pyeasyphd/data/templates/tex/eisvogel.tex +1064 -0
- pyeasyphd/data/templates/tex/math.tex +201 -0
- pyeasyphd/data/templates/tex/math_commands.tex +677 -0
- pyeasyphd/data/templates/tex/nextaimathmacros.sty +681 -0
- pyeasyphd/main/__init__.py +6 -0
- pyeasyphd/main/basic_input.py +101 -0
- pyeasyphd/main/pandoc_md_to.py +380 -0
- pyeasyphd/main/python_run_md.py +320 -0
- pyeasyphd/main/python_run_tex.py +200 -0
- pyeasyphd/pyeasyphd.py +86 -0
- pyeasyphd/pyeasyphd.sublime-settings +100 -0
- pyeasyphd/pyeasyphd.sublime-syntax +5 -0
- pyeasyphd/scripts/__init__.py +34 -0
- pyeasyphd/scripts/_base.py +65 -0
- pyeasyphd/scripts/run_article_md.py +101 -0
- pyeasyphd/scripts/run_article_tex.py +94 -0
- pyeasyphd/scripts/run_beamer_tex.py +84 -0
- pyeasyphd/scripts/run_compare.py +71 -0
- pyeasyphd/scripts/run_format.py +62 -0
- pyeasyphd/scripts/run_generate.py +211 -0
- pyeasyphd/scripts/run_replace.py +34 -0
- pyeasyphd/scripts/run_search.py +251 -0
- pyeasyphd/tools/__init__.py +12 -0
- pyeasyphd/tools/generate/generate_from_bibs.py +181 -0
- pyeasyphd/tools/generate/generate_html.py +166 -0
- pyeasyphd/tools/generate/generate_library.py +203 -0
- pyeasyphd/tools/generate/generate_links.py +400 -0
- pyeasyphd/tools/py_run_bib_md_tex.py +398 -0
- pyeasyphd/tools/search/data.py +282 -0
- pyeasyphd/tools/search/search_base.py +146 -0
- pyeasyphd/tools/search/search_core.py +400 -0
- pyeasyphd/tools/search/search_keywords.py +229 -0
- pyeasyphd/tools/search/search_writers.py +350 -0
- pyeasyphd/tools/search/utils.py +190 -0
- pyeasyphd/utils/utils.py +99 -0
- pyeasyphd-0.4.42.dist-info/METADATA +33 -0
- pyeasyphd-0.4.42.dist-info/RECORD +53 -0
- pyeasyphd-0.4.42.dist-info/WHEEL +4 -0
- pyeasyphd-0.4.42.dist-info/licenses/LICENSE +674 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
|
|
4
|
+
from pyadvtools import IterateSortDict, is_list_contain_list_contain_str, is_list_contain_str, write_list
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def switch_keywords_list(xx: list[str] | list[list[str]]) -> tuple[list[list[str]], str]:
|
|
8
|
+
"""Switch keyword list format and generate combined keywords string.
|
|
9
|
+
|
|
10
|
+
Args:
|
|
11
|
+
xx (list[str] | list[list[str]]): Input keyword list or nested keyword list.
|
|
12
|
+
Examples: ["evolutionary", "algorithm"] or [["evolution"], ["evolutionary"]]
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
tuple[list[list[str]], str]: Tuple containing:
|
|
16
|
+
- List of keyword lists with regex word boundaries
|
|
17
|
+
- Combined keywords string for file naming
|
|
18
|
+
"""
|
|
19
|
+
yyy: list[list[str]] = [[]]
|
|
20
|
+
|
|
21
|
+
if is_list_contain_str(xx):
|
|
22
|
+
yyy = [[rf"\b{x}\b" for x in xx]]
|
|
23
|
+
elif is_list_contain_list_contain_str(xx):
|
|
24
|
+
if len(xx) == 1:
|
|
25
|
+
yyy = [[rf"\b{x}\b" for x in xx[0]]]
|
|
26
|
+
elif len(xx) == 2:
|
|
27
|
+
yyy = [[rf"\b{x}\b" for x in xx[0]], [rf"\b{x}\b" for x in xx[1]]]
|
|
28
|
+
else:
|
|
29
|
+
print(f"Not standard keywords: {xx}")
|
|
30
|
+
return yyy, ""
|
|
31
|
+
else:
|
|
32
|
+
return yyy, ""
|
|
33
|
+
|
|
34
|
+
combine_keywords = "_and_".join(yyy[0])
|
|
35
|
+
if len(yyy) == 2:
|
|
36
|
+
combine_keywords += "_without_{}".format("_and_".join(yyy[1]))
|
|
37
|
+
|
|
38
|
+
# ['evol(?:ution|utionary) strateg(?:y|ies)', 'population(?:| |-)based', 'network(?:|s)']
|
|
39
|
+
# '\bevol(?:ution|utionary) strateg(?:y|ies)\b_and_\bpopulation(?:| |-)based\b_and_\bnetwork(?:|s)\b'
|
|
40
|
+
combine_keywords = combine_keywords.replace(r"\b", "")
|
|
41
|
+
# 'evol(?:ution|utionary) strateg(?:y|ies)_and_population(?:| |-)based_and_network(?:|s)'
|
|
42
|
+
combine_keywords = re.sub(r"\(\?:[\w\s\-|]*\) ", "0 ", combine_keywords)
|
|
43
|
+
# 'evol0 strateg(?:y|ies)_and_population(?:| |-)based_and_network(?:|s)'
|
|
44
|
+
combine_keywords = re.sub(r"\(\?:[\w\s\-|]*\)$", "1", combine_keywords)
|
|
45
|
+
# 'evol0 strateg(?:y|ies)_and_population(?:| |-)based_and_network1'
|
|
46
|
+
combine_keywords = re.sub(r"\(\?:[\w\s\-|]*\)_", "2_", combine_keywords)
|
|
47
|
+
# 'evol0 strateg2_and_population(?:| |-)based_and_network1'
|
|
48
|
+
combine_keywords = re.sub(r"\(\?:[\w\s\-|]*\)", "3", combine_keywords)
|
|
49
|
+
# 'evol0 strateg2_and_population3based_and_network1'
|
|
50
|
+
combine_keywords = combine_keywords.replace("/", "4")
|
|
51
|
+
combine_keywords = combine_keywords.replace(" ", "5")
|
|
52
|
+
# 'evol05strateg2_and_population3based_and_network1'
|
|
53
|
+
return yyy, combine_keywords
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def combine_keywords_for_title(combine_keywords: str) -> str:
|
|
57
|
+
"""Convert combined keywords string to human-readable title format.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
combine_keywords (str): Combined keywords string with special characters.
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
str: Human-readable title format with proper spacing and punctuation.
|
|
64
|
+
"""
|
|
65
|
+
combine_keywords = combine_keywords.replace("_without_", " without ")
|
|
66
|
+
combine_keywords = combine_keywords.replace("_and_", "; ")
|
|
67
|
+
combine_keywords = combine_keywords.replace("0", "")
|
|
68
|
+
combine_keywords = combine_keywords.replace("1", "")
|
|
69
|
+
combine_keywords = combine_keywords.replace("2", "")
|
|
70
|
+
combine_keywords = combine_keywords.replace("3", "-")
|
|
71
|
+
combine_keywords = combine_keywords.replace("4", "/") #
|
|
72
|
+
combine_keywords = combine_keywords.replace("5", " ")
|
|
73
|
+
return combine_keywords
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def combine_keywords_for_file_name(combine_keywords: str) -> str:
|
|
77
|
+
"""Convert combined keywords string to valid file name format.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
combine_keywords (str): Combined keywords string.
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
str: File name safe string with underscores and hyphens.
|
|
84
|
+
"""
|
|
85
|
+
combine_keywords = combine_keywords_for_title(combine_keywords)
|
|
86
|
+
combine_keywords = combine_keywords.replace("/", "-")
|
|
87
|
+
combine_keywords = combine_keywords.replace("; ", "_and_")
|
|
88
|
+
combine_keywords = combine_keywords.replace(" ", "_")
|
|
89
|
+
return combine_keywords
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def switch_keywords_type(keywords_type: str) -> str:
|
|
93
|
+
"""Normalize keywords type string for consistent formatting.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
keywords_type (str): Keywords type string to normalize.
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
str: Normalized keywords type with consistent separators.
|
|
100
|
+
"""
|
|
101
|
+
keywords_type = keywords_type.replace("/", "-")
|
|
102
|
+
keywords_type = keywords_type.replace(" ", "_")
|
|
103
|
+
keywords_type = re.sub(r"-+", "-", keywords_type)
|
|
104
|
+
keywords_type = re.sub(r"_+", "_", keywords_type)
|
|
105
|
+
return keywords_type.strip()
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def keywords_type_for_title(keywords_type: str) -> str:
|
|
109
|
+
"""Convert keywords type string to title format.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
keywords_type (str): Keywords type string with underscores.
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
str: Title format with spaces instead of underscores.
|
|
116
|
+
"""
|
|
117
|
+
keywords_type = keywords_type.replace("_", " ")
|
|
118
|
+
return keywords_type.strip()
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def extract_information(old_dict: dict[str, dict[str, dict[str, dict[str, dict[str, int]]]]], path_output: str) -> None:
|
|
122
|
+
"""Extract and organize search information into markdown tables.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
old_dict (dict[str, dict[str, dict[str, dict[str, dict[str, int]]]]]): Nested dictionary containing search results.
|
|
126
|
+
path_output (str): Output directory path for generated markdown files.
|
|
127
|
+
"""
|
|
128
|
+
new_dict: dict[str, dict[str, dict[str, dict[str, dict[str, int]]]]] = {}
|
|
129
|
+
|
|
130
|
+
for abbr in old_dict:
|
|
131
|
+
for entry_type in old_dict[abbr]:
|
|
132
|
+
for keyword_type in old_dict[abbr][entry_type]:
|
|
133
|
+
for keyword in old_dict[abbr][entry_type][keyword_type]:
|
|
134
|
+
for field in old_dict[abbr][entry_type][keyword_type][keyword]:
|
|
135
|
+
no = old_dict[abbr][entry_type][keyword_type][keyword][field]
|
|
136
|
+
(
|
|
137
|
+
new_dict.setdefault(entry_type, {})
|
|
138
|
+
.setdefault(field, {})
|
|
139
|
+
.setdefault(keyword_type, {})
|
|
140
|
+
.setdefault(keyword, {})
|
|
141
|
+
.update({abbr: no})
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
new_dict = IterateSortDict(False).dict_update(new_dict)
|
|
145
|
+
|
|
146
|
+
for entry_type in new_dict:
|
|
147
|
+
for field in new_dict[entry_type]:
|
|
148
|
+
data_list = []
|
|
149
|
+
for keyword_type in new_dict[entry_type][field]:
|
|
150
|
+
for keyword in new_dict[entry_type][field][keyword_type]:
|
|
151
|
+
abbr_list = sorted(new_dict[entry_type][field][keyword_type][keyword].keys())
|
|
152
|
+
num_list = [new_dict[entry_type][field][keyword_type][keyword][abbr] for abbr in abbr_list]
|
|
153
|
+
|
|
154
|
+
a = f"|Keywords Types|Keywords|{'|'.join(list(abbr_list))}|\n"
|
|
155
|
+
if a not in data_list:
|
|
156
|
+
data_list.append(a)
|
|
157
|
+
|
|
158
|
+
b = f"|-|-|{'|'.join(['-' for _ in abbr_list])}|\n"
|
|
159
|
+
if b not in data_list:
|
|
160
|
+
data_list.append(b)
|
|
161
|
+
|
|
162
|
+
keyword = combine_keywords_for_file_name(keyword)
|
|
163
|
+
data_list.append(f"|{keyword_type}|{keyword}|{'|'.join([str(n) for n in num_list])}|\n")
|
|
164
|
+
|
|
165
|
+
write_list(data_list, f"{field}-keywords_count.md", "w", os.path.join(path_output, entry_type), False)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
temp_html_style = """ <style>
|
|
169
|
+
html {font-size: 19px;}
|
|
170
|
+
body {margin: 0 auto; max-width: 22em;}
|
|
171
|
+
table {
|
|
172
|
+
border-collapse: collapse;
|
|
173
|
+
border: 2px solid rgb(200,200,200);
|
|
174
|
+
letter-spacing: 1px;
|
|
175
|
+
font-size: 0.8rem;
|
|
176
|
+
}
|
|
177
|
+
td, th {
|
|
178
|
+
border: 1px solid rgb(190,190,190);
|
|
179
|
+
padding: 10px 20px;
|
|
180
|
+
}
|
|
181
|
+
td {text-align: center;}
|
|
182
|
+
caption {padding: 12px;}
|
|
183
|
+
</style>
|
|
184
|
+
</head>
|
|
185
|
+
<body>
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
if __name__ == "__main__":
|
|
190
|
+
pass
|
pyeasyphd/utils/utils.py
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import os
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
from pyadvtools import combine_content_in_list, read_list, write_list
|
|
6
|
+
|
|
7
|
+
html_head = """<!DOCTYPE html>
|
|
8
|
+
<html>
|
|
9
|
+
<head>
|
|
10
|
+
<meta charset="utf-8">
|
|
11
|
+
<title>{}</title>
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
html_style = """ <style>
|
|
15
|
+
html {font-size: 22px;}
|
|
16
|
+
body {margin: 0 auto; max-width: 76em;}
|
|
17
|
+
#copyID {font-size: 18px;}
|
|
18
|
+
</style>
|
|
19
|
+
<script>
|
|
20
|
+
function copy(element) {
|
|
21
|
+
if (element.type == "button"){
|
|
22
|
+
element.type="text";
|
|
23
|
+
}
|
|
24
|
+
element.style.color="black";
|
|
25
|
+
element.style.backgroundColor="#C7EDCC";
|
|
26
|
+
element.select();
|
|
27
|
+
element.setSelectionRange(0, 99999);
|
|
28
|
+
navigator.clipboard.writeText(element.value);
|
|
29
|
+
window.getSelection().removeAllRanges();
|
|
30
|
+
element.type="button";
|
|
31
|
+
}
|
|
32
|
+
</script>
|
|
33
|
+
</head>
|
|
34
|
+
<body>
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
html_tail = """
|
|
38
|
+
</body>
|
|
39
|
+
</html>
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
textarea_header = '<textarea id="copyID" onclick="copy(this)" rows="16" cols="145">\n'
|
|
43
|
+
textarea_tail = "\n</textarea>"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def operate_on_generate_html(html_name: str) -> None:
|
|
47
|
+
"""Operate on generated HTML file to add styling and functionality.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
html_name (str): Name of the HTML file to process.
|
|
51
|
+
"""
|
|
52
|
+
if not (data_list := read_list(html_name, "r", None)):
|
|
53
|
+
return None
|
|
54
|
+
|
|
55
|
+
head_list = [html_head.format(os.path.basename(html_name).split(".")[0].strip()), html_style, "\n"]
|
|
56
|
+
tail_list = [html_tail]
|
|
57
|
+
|
|
58
|
+
content = "".join(data_list)
|
|
59
|
+
content = content.replace("<pre><code>", textarea_header).replace("</code></pre>", textarea_tail)
|
|
60
|
+
for i in re.findall(r"<li>(.*?)<details>", content, re.DOTALL):
|
|
61
|
+
content = content.replace(rf"<li>{i}<details>", f"<li><details>\n<summary>\n{i.strip()}\n</summary>")
|
|
62
|
+
data_list = combine_content_in_list([head_list, [content], tail_list])
|
|
63
|
+
write_list(data_list, html_name, "w", None, False)
|
|
64
|
+
return None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def is_last_week_of_month():
|
|
68
|
+
"""Check if today's date falls in the last week of the current month.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
bool: True if today is in the last week of the month, False otherwise.
|
|
72
|
+
"""
|
|
73
|
+
# Get today's date
|
|
74
|
+
today = datetime.date.today()
|
|
75
|
+
|
|
76
|
+
# Calculate the last day of the current month
|
|
77
|
+
# First, find the first day of next month
|
|
78
|
+
if today.month == 12:
|
|
79
|
+
next_month = datetime.date(today.year + 1, 1, 1)
|
|
80
|
+
else:
|
|
81
|
+
next_month = datetime.date(today.year, today.month + 1, 1)
|
|
82
|
+
|
|
83
|
+
# Subtract one day to get the last day of the current month
|
|
84
|
+
last_day_of_month = next_month - datetime.timedelta(days=1)
|
|
85
|
+
|
|
86
|
+
# Calculate the week number of today and the last day of the month
|
|
87
|
+
# Using isocalendar() which returns (year, week number, weekday)
|
|
88
|
+
today_week = today.isocalendar()[1]
|
|
89
|
+
last_day_week = last_day_of_month.isocalendar()[1]
|
|
90
|
+
|
|
91
|
+
# For December, the week number might roll over to next year
|
|
92
|
+
# If so, we need to adjust the comparison
|
|
93
|
+
if today.month == 12 and today_week < last_day_week:
|
|
94
|
+
# This handles the case where the last week of December is actually
|
|
95
|
+
# the first week of the next year in the ISO calendar
|
|
96
|
+
return True
|
|
97
|
+
|
|
98
|
+
# Check if we're in the same week as the last day of the month
|
|
99
|
+
return today_week == last_day_week
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyeasyphd
|
|
3
|
+
Version: 0.4.42
|
|
4
|
+
Summary: pyeasyphd
|
|
5
|
+
Project-URL: Homepage, https://github.com/Easy-PhD/pyeasyphd
|
|
6
|
+
Project-URL: Repository, https://github.com/Easy-PhD/pyeasyphd
|
|
7
|
+
Project-URL: Documentation, https://Easy-PhD.github.io/pyeasyphd
|
|
8
|
+
Project-URL: Source, https://github.com/Easy-PhD/pyeasyphd
|
|
9
|
+
Project-URL: Issues, https://github.com/Easy-PhD/pyeasyphd/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/Easy-PhD/pyeasyphd/releases
|
|
11
|
+
Author-email: NextAI <nextartifintell@gmail.com>
|
|
12
|
+
Maintainer-email: NextAI <nextartifintell@gmail.com>
|
|
13
|
+
License-Expression: GPL-3.0-or-later
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Keywords: BibTex,Python
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Requires-Python: >=3.12
|
|
24
|
+
Requires-Dist: pybibtexer>=0.3.36
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
|
|
27
|
+
# pyeasyphd
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
|
31
|
+

|
|
32
|
+
[](https://pypi.org/project/pyeasyphd/)
|
|
33
|
+
[](http://commitizen.github.io/cz-cli/)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
pyeasyphd/.python-version,sha256=Auc1s9_hwygz61ULf_j_oX9fK8P6HnuuYaj1o4g845g,5
|
|
2
|
+
pyeasyphd/Main.sublime-menu,sha256=TTGNg9MzL5_uz4SXvs2pTdQQNxk9dSJmbUkPjujfQls,1554
|
|
3
|
+
pyeasyphd/__init__.py,sha256=tEypJy-Kmj6Oxpjh767NjkH5Ct0JF1Nhiw3D6-7I4E8,260
|
|
4
|
+
pyeasyphd/pyeasyphd.py,sha256=jIpt0JzF_iE8hVnujla3LfI3SeyqGgHNiGI6S_cb8Iw,3470
|
|
5
|
+
pyeasyphd/pyeasyphd.sublime-settings,sha256=bfi8eWzCWW3hdrqpCCC8aimprMlJE9u38VAe1lEeJtA,3283
|
|
6
|
+
pyeasyphd/pyeasyphd.sublime-syntax,sha256=pXylbA-tye-K5dCTjEJLFVRqtY1T7AgWZ4laxo-dnaE,73
|
|
7
|
+
pyeasyphd/data/templates/csl/apa-no-ampersand.csl,sha256=ndFDG38PUNyGYpvfGqx_KzoSIs0DXA4w0GHG3MgFV7E,86859
|
|
8
|
+
pyeasyphd/data/templates/csl/apa.csl,sha256=S5OAu8zlZqzubySyR5c2FYDEzkTyuC9aRaJJlsygM8M,84591
|
|
9
|
+
pyeasyphd/data/templates/csl/ieee.csl,sha256=SzU0l89ymSCtmpugSoz2S6uM3_GHvibFZwZewn7WVEA,17413
|
|
10
|
+
pyeasyphd/data/templates/tex/Article.tex,sha256=M-vMXiHc2ncOTahtuY40s3flr2Ojo_-C8DDvLExMKbA,1264
|
|
11
|
+
pyeasyphd/data/templates/tex/Article_Header.tex,sha256=41Wv1BcQMmvh5peKTPh3uK_tm7mOSBnrFqkO0JzlXKU,949
|
|
12
|
+
pyeasyphd/data/templates/tex/Article_Tail.tex,sha256=1m7z4T6h8B8ylw3_4Q8_EOgzhyRRVSHgHrGZ6b5ut4k,35
|
|
13
|
+
pyeasyphd/data/templates/tex/Beamer_Header.tex,sha256=AWzgGmosZBX-YRynsbCChu6iF97FKDp3iU1OvBWeoC4,3692
|
|
14
|
+
pyeasyphd/data/templates/tex/Beamer_Tail.tex,sha256=88F75V0B8mP9naOEzM1S8PuEtYPdpZJAwxFQVVPP5K0,211
|
|
15
|
+
pyeasyphd/data/templates/tex/Style.tex,sha256=CK_Uxf3MEKRhxWC0OnipkHrgQIO_I5CHPBQ_T5wXvog,9726
|
|
16
|
+
pyeasyphd/data/templates/tex/TEVC_Header.tex,sha256=WPFIJLQNRsEcr5jxSw8rpc2gXJrMLie273yfwgEXAOU,1579
|
|
17
|
+
pyeasyphd/data/templates/tex/TEVC_Tail.tex,sha256=FBoefRJsnJrH1-eRZfF68qu_lHjwYZhj-iFWBWfV4tw,86
|
|
18
|
+
pyeasyphd/data/templates/tex/eisvogel.tex,sha256=9bDMPfUFjaHQZPCnYLwjsw5DfBtD04uzwfxvQa9nWuE,30748
|
|
19
|
+
pyeasyphd/data/templates/tex/math.tex,sha256=y_8AJzjmCCX6xmZQ_yCcABqMLqufOeh54pafTvNyUIM,11030
|
|
20
|
+
pyeasyphd/data/templates/tex/math_commands.tex,sha256=6ZQOletBnFRA6q6fU8TDVN4c9hDEdbmZuKnJgkgzq48,41513
|
|
21
|
+
pyeasyphd/data/templates/tex/nextaimathmacros.sty,sha256=iF0jyABkoPUY_XA-lPkvZSlblFuWLX9ie82gRqY0Fks,41644
|
|
22
|
+
pyeasyphd/main/__init__.py,sha256=Pv-7359vftMgw3Wi_GuDy99K0TcY6hVwLkFFip774x8,224
|
|
23
|
+
pyeasyphd/main/basic_input.py,sha256=N-33KUs8GQM517Qq6Ey-CAMwgTv9k1IP69BN3rpJnKA,4478
|
|
24
|
+
pyeasyphd/main/pandoc_md_to.py,sha256=W_TFDj2_wieVAXa5xZRO4Of7wlI6yknW14bRLCZ21GA,17138
|
|
25
|
+
pyeasyphd/main/python_run_md.py,sha256=TmvoNoughRbEOY-NnEsaMBSjv13N_AlzrgTDqHiH9GY,14346
|
|
26
|
+
pyeasyphd/main/python_run_tex.py,sha256=2wTCumPrdzfCGA63f6ljlEs4P8WerpQwEZQ0SBQFKSc,8795
|
|
27
|
+
pyeasyphd/scripts/__init__.py,sha256=QDmJugM90NFSzb69A6PSuCf76pHIcptRIaKNtSwXb-s,1235
|
|
28
|
+
pyeasyphd/scripts/_base.py,sha256=WdmIrJFwWw1yK6pg1sg1W74d3LwskdKUTD9ekEGBfyU,2315
|
|
29
|
+
pyeasyphd/scripts/run_article_md.py,sha256=SHTMhd7_JBTWlZ8azfLV17eXx94j1zRWUAo53pDV014,4403
|
|
30
|
+
pyeasyphd/scripts/run_article_tex.py,sha256=iNSMcPwFj_fgS_itmfSqICom4BVHu6SKmn2eNtiG0Xc,3699
|
|
31
|
+
pyeasyphd/scripts/run_beamer_tex.py,sha256=Rej505gwGB9vPO4h7cPl88p0htZVF9QIG9PDcnnkzhs,3460
|
|
32
|
+
pyeasyphd/scripts/run_compare.py,sha256=wop1uRmPqOXnMtRtMuTdy8dHhtZ0wpzthOcURw4URe8,3196
|
|
33
|
+
pyeasyphd/scripts/run_format.py,sha256=FjJS0-Ax3kEb-SLui-wUBjxI4G9cQzOJbxLNiYEqNQc,2936
|
|
34
|
+
pyeasyphd/scripts/run_generate.py,sha256=i8J3X3zn2QMuKUshu3FGpaq4kPw_P7TVXU46Wy_mZ8s,8549
|
|
35
|
+
pyeasyphd/scripts/run_replace.py,sha256=nvNnnxoutaWU3n-bdXlLx-VUZL3AH1yRnpfxTks1wbE,1314
|
|
36
|
+
pyeasyphd/scripts/run_search.py,sha256=P0TvcJuaVKbyPmAahk_SngxHKlndtTAHoX8hCMRC3m8,10510
|
|
37
|
+
pyeasyphd/tools/__init__.py,sha256=u1MZu_JjVac3HhEmcSTwroS83UVu0W5Vspy3Wu_-GH8,496
|
|
38
|
+
pyeasyphd/tools/py_run_bib_md_tex.py,sha256=ZqIzvw8AXDtv35BaVD4ySkXh1MLdKKXfNKN9ghQDWbk,17484
|
|
39
|
+
pyeasyphd/tools/generate/generate_from_bibs.py,sha256=AwY9gDcxOzPkPd0PzVVSv05rVuVDJdfXx13bdaP4R8E,7645
|
|
40
|
+
pyeasyphd/tools/generate/generate_html.py,sha256=DP4Ti6xC0FJnKR6TpUpMysrRa0e7-jEdszHamN5JDMU,5393
|
|
41
|
+
pyeasyphd/tools/generate/generate_library.py,sha256=ENOgnpwZdHpzA9XBUziHYWiYYHsmvgUQ1Xk_CTOIKQU,7824
|
|
42
|
+
pyeasyphd/tools/generate/generate_links.py,sha256=w7-RklfC0QU_-0-_RBHayR6WyhPu-9BQlvdhFjfIq68,16042
|
|
43
|
+
pyeasyphd/tools/search/data.py,sha256=iL7mZO49SRMHUkPtrK_3xzhFJAbHURIpXr0nGF76DH0,10300
|
|
44
|
+
pyeasyphd/tools/search/search_base.py,sha256=wwqtKN5gkvypO1ZQFVtRlZDy1aqtYuMaXgpbeKBAbf4,5909
|
|
45
|
+
pyeasyphd/tools/search/search_core.py,sha256=cR-2ix68PA2DstxpSEjFzb-KLivYo3pYVpnxldsezfo,17421
|
|
46
|
+
pyeasyphd/tools/search/search_keywords.py,sha256=orO85DiRoBV1BJS0OVE9JnC5pt-kuh8u05n8hWESGKI,10827
|
|
47
|
+
pyeasyphd/tools/search/search_writers.py,sha256=LfI_oxpuX8C5uZP9uosGJ4utO11UJQG230x1YwUJWPU,15665
|
|
48
|
+
pyeasyphd/tools/search/utils.py,sha256=SKQcUBkOqMkJpgmdfnHmPCBZbwvRFF_2QPP0cAlSRFk,7487
|
|
49
|
+
pyeasyphd/utils/utils.py,sha256=8NfdQC0V3UGYeSweb7gjimQkQqM5dWeuUHOiRjVXaxk,3123
|
|
50
|
+
pyeasyphd-0.4.42.dist-info/METADATA,sha256=vKtuBfF0jYMvaW-s62HMrwEmVn-fVR6RPUnlcgzxBLs,1600
|
|
51
|
+
pyeasyphd-0.4.42.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
52
|
+
pyeasyphd-0.4.42.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
53
|
+
pyeasyphd-0.4.42.dist-info/RECORD,,
|