From 8eb7c2ee5003f2cc42bbfb34186f1da95f15530e Mon Sep 17 00:00:00 2001 From: binh Date: Wed, 6 Jan 2021 21:15:16 +0700 Subject: [PATCH 1/8] Refactor answer, question, exam module. --- pytexexam/answer.py | 8 +- pytexexam/exam.py | 9 +-- pytexexam/latexexam.py | 2 +- pytexexam/question.py | 175 +++++++---------------------------------- setup.py | 1 - 5 files changed, 39 insertions(+), 156 deletions(-) diff --git a/pytexexam/answer.py b/pytexexam/answer.py index 24d6053..ba61bd1 100755 --- a/pytexexam/answer.py +++ b/pytexexam/answer.py @@ -1,13 +1,15 @@ class Answer: """ - This class is used to store 1 answer in a exam question. + This class is used to store 1 answer in a question. """ - def __init__(self, answer: str = "", is_true_answer=False): + def __init__(self, answer_key: str, answer: str = "", is_true_answer=False): """ This method initializes an Answer object. + :param answer_key: Answer :param answer: Answer to the question. - :param is_true_answer: If the answer is true,the value is True, if false then False. + :param is_true_answer: If the answer is correct,the value is True, otherwise False. """ + self.answer_key = answer_key self.answer: str = answer self.is_true_answer: bool = is_true_answer diff --git a/pytexexam/exam.py b/pytexexam/exam.py index 4386c3b..64267e7 100755 --- a/pytexexam/exam.py +++ b/pytexexam/exam.py @@ -1,13 +1,13 @@ -import typing +from random import SystemRandom +from typing import List from .question import Question -import random class Exam: """ This class represents an exam. """ - def __init__(self, question_list: typing.List[Question]): + def __init__(self, question_list: List[Question]): self.question_list = question_list """List of questions in the exam""" @@ -15,5 +15,4 @@ def shuffle_question(self): """ This method allows to shuffle all the questions in the exam. """ - r = random.SystemRandom() - r.shuffle(self.question_list) + SystemRandom().shuffle(self.question_list) diff --git a/pytexexam/latexexam.py b/pytexexam/latexexam.py index 7a2d0ea..a7ff36d 100755 --- a/pytexexam/latexexam.py +++ b/pytexexam/latexexam.py @@ -162,4 +162,4 @@ def export_tex_solution(self, file_name: str): def export_pdf_solution(self, file_name: str): """Export a file containing detailed answers for each question in the exam""" self.export_tex_solution(file_name) - os.system("pdflatex {file_name}".format(file_name=file_name)) + os.system("pdflatex {file_name}".format(file_name=file_name)) \ No newline at end of file diff --git a/pytexexam/question.py b/pytexexam/question.py index a6a5936..143a38b 100755 --- a/pytexexam/question.py +++ b/pytexexam/question.py @@ -1,163 +1,46 @@ +import string +from random import SystemRandom + from .answer import Answer -import random -from typing import Dict +from typing import List class Question: """ This class represents one question on the test. """ - def __init__(self, question: str): - self.question: str = question + def __init__(self, question: str, answers: List[str], true_answer: str, solution: str, answer_column: int): + self.__question: str = question """Content of the question.""" - self.__answer_a = Answer() - """Content of the answer A""" - self.__answer_b = Answer() - """Content of the answer B""" - self.__answer_c = Answer() - """Content of the answer C""" - self.__answer_d = Answer() - """Content of the answer D""" - self.__answer_column = 1 - """Number of columns for which the answer will be presented. Answers can be presented as - 1 column, 2 columns or 4 columns""" - self.__solution = "" + self.__answers: List[Answer] = self.get_answer_list(answers, true_answer) + """Question answers""" + self.__answer_column = answer_column + """Number of columns for which the answer will be presented.""" + self.__solution = solution """Solution of the question""" - def answer_a(self, answer: str, true_answer=False): - """ - This method is used to enter answer A for the question. - - :param answer: Content of the answer A - :param true_answer: If this is the correct answer then enter True. otherwise False - - """ - self.__answer_a.answer = answer - self.__answer_a.is_true_answer = true_answer - - def answer_b(self, answer: str, true_answer=False): - """ - This method is used to enter answer B to the question. - - :param answer: Content of the answer B - :param true_answer: If this is the correct answer then enter True, otherwise False - + @staticmethod + def get_answer_list(answers: List[str], true_answer: str) -> List[Answer]: """ - self.__answer_b.answer = answer - self.__answer_b.is_true_answer = true_answer - - def answer_c(self, answer: str, true_answer=False): + Generate a list of answer object from answer and true answer key + :param answers: question answer list. + :param true_answer: answer key of true answer. + :return: a list of answer object. """ - This method is used to enter answer C to the question. - - :param answer: Content of the answer C - :param true_answer: If this is the correct answer then enter True, otherwise False + answer_key = Question.get_answer_key() + answer_list_size = min(len(answer_key), len(answers)) + answer_list: List[Answer] = [] + for i in range(0, answer_list_size): + answer_list.append(Answer(answer_key[i], answers[i], answer_key[i] == true_answer)) + return answer_list + @staticmethod + def get_answer_key() -> List[str]: """ - self.__answer_c.answer = answer - self.__answer_c.is_true_answer = true_answer - - def answer_d(self, answer: str, true_answer=False): - """ - This method is used to enter answer D for the question. - - :param answer: Content of the answer D - :param true_answer: If this is the correct answer then enter True, otherwise False - - """ - self.__answer_d.answer = answer - self.__answer_d.is_true_answer = true_answer - - def answers(self, true_answer: str, answer_dict: Dict[str, str]): - """ - Another way to enter answers to questions. - - :param true_answer: The letter that corresponds to the correct answer (A, B, C, D) - :param answer_dict: A dictionary contains the answers to the questions. \ - The corresponding key of this dictionary is A, B, C, D. - - """ - self.__answer_a.answer = answer_dict.get("A") - self.__answer_b.answer = answer_dict.get("B") - self.__answer_c.answer = answer_dict.get("C") - self.__answer_d.answer = answer_dict.get("D") - if true_answer == "A": - self.__answer_a.is_true_answer = True - elif true_answer == "B": - self.__answer_b.is_true_answer = True - elif true_answer == "C": - self.__answer_c.is_true_answer = True - else: - self.__answer_d.is_true_answer = True - - def get_answer(self, answer_key: str) -> str: + get list of alphabet character. (to use it as answer key) + :return: Alphabet character list. """ - This method is used to get answers to questions. - - :param answer_key: The key corresponding to the answer of the question. - :return: The answer corresponds to the selected answer. - - """ - answer_list = { - "A": self.__answer_a.answer, - "B": self.__answer_b.answer, - "C": self.__answer_c.answer, - "D": self.__answer_d.answer - } - return answer_list.get(answer_key, "Invalid") + return list(string.ascii_uppercase) def shuffle_answer(self): - """ - The method that allows the swap answers in question. - - """ - answer_list = [self.__answer_a, self.__answer_b, self.__answer_c, self.__answer_d] - r = random.SystemRandom() - r.shuffle(answer_list) - self.__answer_a = answer_list[0] - self.__answer_b = answer_list[1] - self.__answer_c = answer_list[2] - self.__answer_d = answer_list[3] - - def set_answer_column(self, answer_column: int): - """ - This method allows you to enter the number of columns where the answer will be displayed - when printing the question. The possible values ​​are 1, 2, 4 - - :param answer_column: The number of columns the answer will be displayed when printed. - - """ - if answer_column in [1, 2, 4]: - self.__answer_column = answer_column - - def get_answer_column(self) -> int: - """ - This method returns the number of columns where the answer will be presented when the - question is printed. The function can return 1, 2, 4. - - :return: The number of columns the answer will be displayed when the question is printed - """ - return self.__answer_column - - def get_true_answer(self) -> str: - """ - This method returns the character corresponding to the correct answer of the question. - The possible answer are A, B, C, D. - - :return: The letter corresponding to the correct answer of the question - """ - if self.__answer_a.is_true_answer: - return "A" - elif self.__answer_b.is_true_answer: - return "B" - elif self.__answer_c.is_true_answer: - return "C" - else: - return "D" - - def solution(self, solution: str): - """This method is used to enter detailed answer to the question""" - self.__solution = solution - - def get_solution(self) -> str: - return self.__solution + SystemRandom().shuffle(self.__answers) diff --git a/setup.py b/setup.py index d317a3e..c022caa 100755 --- a/setup.py +++ b/setup.py @@ -16,5 +16,4 @@ long_description=long_description, long_description_content_type="text/markdown", install_requires=['jinja2'], - ) From 8f18d403d560ab7f428197ea89425515820f2e01 Mon Sep 17 00:00:00 2001 From: binh Date: Thu, 7 Jan 2021 20:50:52 +0700 Subject: [PATCH 2/8] Add latex paper class --- pytexexam/answer.py | 2 +- pytexexam/latexexam.py | 184 +++++++--------------------------------- pytexexam/latexpaper.py | 15 ++++ pytexexam/question.py | 16 ++-- 4 files changed, 55 insertions(+), 162 deletions(-) create mode 100755 pytexexam/latexpaper.py diff --git a/pytexexam/answer.py b/pytexexam/answer.py index ba61bd1..97e80bd 100755 --- a/pytexexam/answer.py +++ b/pytexexam/answer.py @@ -2,7 +2,7 @@ class Answer: """ This class is used to store 1 answer in a question. """ - def __init__(self, answer_key: str, answer: str = "", is_true_answer=False): + def __init__(self, answer_key: str, answer: str, is_true_answer=False): """ This method initializes an Answer object. diff --git a/pytexexam/latexexam.py b/pytexexam/latexexam.py index a7ff36d..0282bbc 100755 --- a/pytexexam/latexexam.py +++ b/pytexexam/latexexam.py @@ -1,165 +1,43 @@ -from typing import List +from latexpaper import LatexPaper -from .exam import Exam -from .question import Question -from jinja2 import Environment, PackageLoader -import os +class LatexExamPaper(LatexPaper): + def __init__(self): + self.preamble = "" + self.header = "" + self.questions = list() + self.footer = "" -class LatexExam: - """ - This class represents a exam, allowing users to print the exam and answer to a tex file - or pdf (with latex pre-installed) - """ - def __init__(self, exam_title: str, exam: Exam): - self.__env = Environment( - loader=PackageLoader('pytexexam', 'templates'), - autoescape=False - ) - """The environment variable is used to render latex files""" + def __print_question(self): + pass - self.exam_content: Exam = exam - """The content of the exam""" - self.question_theorem = "Question" - """The content of the beginning of each question will be printed""" - self.solution_theorem = "Solution" - """The content of the beginning of each detailed answer will be printed""" - self.user_preamble: str = "" - """Preamble of the latex file corresponds to the exam""" - self.exam_title: str = exam_title - """Exam name""" - self.exam_header: str = self.__env.get_template("examheader.tex").render(exam_title=self.exam_title) - """The presentation of the exam's header""" + def get_latex_string(self) -> str: + pass - def add_user_preamble(self, preamble: str): - """Added preamble of latex file""" - self.user_preamble += preamble - def __print_question(self, question: Question) -> str: - """ - Print the question as a string +class LatexExamAnswer(LatexPaper): + def __init__(self): + self.preamble = "" + self.header = "" + self.questions = list() + self.footer = "" - :param question: Questions to print. - :return: Character string representing the question content in latex. - """ - if question.get_answer_column() == 1: - return self.__print_question_1(question) - elif question.get_answer_column() == 2: - return self.__print_question_2(question) - else: - return self.__print_question_4(question) + def __print_answer(self): + pass - def __print_question_1(self, question: Question) -> str: - """ - Print the question as a column. + def get_latex_string(self) -> str: + pass - :param question: Questions to print. - :return: Character string representing the question content in latex. - """ - template = self.__env.get_template("mcq1.tex") - return template.render(question=question.question, answer_a=question.get_answer("A"), - answer_b=question.get_answer("B"), answer_c=question.get_answer("C"), - answer_d=question.get_answer("D")) - def __print_question_2(self, question: Question) -> str: - """ - Print the question as 2 columns. +class LatexExamSolution(LatexPaper): + def __init__(self): + self.preamble = "" + self.header = "" + self.questions = list() + self.footer = "" - :param question: Questions to print. - :return: Character string representing the question content in latex. - """ - template = self.__env.get_template("mcq2.tex") - return template.render(question=question.question, answer_a=question.get_answer("A"), - answer_b=question.get_answer("B"), answer_c=question.get_answer("C"), - answer_d=question.get_answer("D")) + def __print_solution(self): + pass - def __print_question_4(self, question: Question) -> str: - """ - Print the question as 4 columns. - - :param question: Questions to print. - :return: Character string representing the question content in latex. - """ - template = self.__env.get_template("mcq4.tex") - return template.render(question=question.question, answer_a=question.get_answer("A"), - answer_b=question.get_answer("B"), answer_c=question.get_answer("C"), - answer_d=question.get_answer("D")) - - def __get_questions_str(self) -> List[str]: - """ - Get the latex code of all the questions in the exam - - :return: List of latex codes questions - """ - questions_str: List[str] = [] - for question in self.exam_content.question_list: - question_str = self.__print_question(question) - questions_str.append(question_str) - return questions_str - - def __get_solutions_str(self) -> List[str]: - """ - Get the latex code of the answers found in all the exam questions - - :return: List of latex codes solution - """ - template = self.__env.get_template("mcqsolution.tex") - solutions_str: List[str] = [] - for question in self.exam_content.question_list: - solution_str = template.render(question=self.__print_question(question), - solution=question.get_solution()) - solutions_str.append(solution_str) - return solutions_str - - def export_tex_exam(self, file_name: str): - """ - This method proposed exam as a tex file. - - :param file_name: The file name will output. - """ - template = self.__env.get_template("exam.tex") - question_str_list = self.__get_questions_str() - template.stream(questions_str=question_str_list, question_theorem=self.question_theorem, - user_preamble=self.user_preamble, exam_header=self.exam_header - ).dump(file_name) - - def export_pdf_exam(self, file_name: str): - """ - This method export the exam as a pdf file. - - :param file_name: The file name will output. - """ - self.export_tex_exam(file_name) - os.system("pdflatex {file_name}".format(file_name=file_name)) - - def export_tex_answer(self, file_name: str): - """ - This method export the answer as a tex file. - - :param file_name: The file name will output. - """ - template = self.__env.get_template("answer.tex") - template.stream(questions=self.exam_content.question_list, exam_header=self.exam_header).dump(file_name) - - def export_pdf_answer(self, file_name: str): - """ - This method export the answer as a tex file. - - :param file_name: The file name will output. - """ - self.export_tex_answer(file_name) - os.system("pdflatex {file_name}".format(file_name=file_name)) - - def export_tex_solution(self, file_name: str): - """Export a file containing detailed answers for each question in the exam""" - template = self.__env.get_template("examsolution.tex") - solution_str_list = self.__get_solutions_str() - template.stream(solutions_str=solution_str_list, question_theorem=self.question_theorem, - solution_theorem=self.solution_theorem, user_preamble=self.user_preamble, - exam_header=self.exam_header - ).dump(file_name) - - def export_pdf_solution(self, file_name: str): - """Export a file containing detailed answers for each question in the exam""" - self.export_tex_solution(file_name) - os.system("pdflatex {file_name}".format(file_name=file_name)) \ No newline at end of file + def get_latex_string(self) -> str: + pass diff --git a/pytexexam/latexpaper.py b/pytexexam/latexpaper.py new file mode 100755 index 0000000..747bbb9 --- /dev/null +++ b/pytexexam/latexpaper.py @@ -0,0 +1,15 @@ +import os + + +class LatexPaper: + def get_latex_string(self) -> str: + pass + + def export_tex_file(self, file_dir: str): + file = open(file_dir, "w") + file.write(self.get_latex_string()) + file.close() + + def export_pdf_file(self, file_dir: str): + self.export_tex_file(file_dir) + os.system(f"pdflatex {file_dir}") diff --git a/pytexexam/question.py b/pytexexam/question.py index 143a38b..3bd285f 100755 --- a/pytexexam/question.py +++ b/pytexexam/question.py @@ -10,24 +10,24 @@ class Question: This class represents one question on the test. """ def __init__(self, question: str, answers: List[str], true_answer: str, solution: str, answer_column: int): - self.__question: str = question + self.question: str = question """Content of the question.""" - self.__answers: List[Answer] = self.get_answer_list(answers, true_answer) + self.answers: List[Answer] = self.__get_answer_list(answers, true_answer) """Question answers""" - self.__answer_column = answer_column + self.answer_column = answer_column """Number of columns for which the answer will be presented.""" - self.__solution = solution + self.solution = solution """Solution of the question""" @staticmethod - def get_answer_list(answers: List[str], true_answer: str) -> List[Answer]: + def __get_answer_list(answers: List[str], true_answer: str) -> List[Answer]: """ Generate a list of answer object from answer and true answer key :param answers: question answer list. :param true_answer: answer key of true answer. :return: a list of answer object. """ - answer_key = Question.get_answer_key() + answer_key = Question.__get_answer_key() answer_list_size = min(len(answer_key), len(answers)) answer_list: List[Answer] = [] for i in range(0, answer_list_size): @@ -35,7 +35,7 @@ def get_answer_list(answers: List[str], true_answer: str) -> List[Answer]: return answer_list @staticmethod - def get_answer_key() -> List[str]: + def __get_answer_key() -> List[str]: """ get list of alphabet character. (to use it as answer key) :return: Alphabet character list. @@ -43,4 +43,4 @@ def get_answer_key() -> List[str]: return list(string.ascii_uppercase) def shuffle_answer(self): - SystemRandom().shuffle(self.__answers) + SystemRandom().shuffle(self.answers) From 215308001300ac97d74e819b49bfe18e8e1cd980 Mon Sep 17 00:00:00 2001 From: binh Date: Mon, 11 Jan 2021 22:00:24 +0700 Subject: [PATCH 3/8] Implement latexexam.py file --- pytexexam/jinja2env.py | 6 ++++ pytexexam/latexexam.py | 42 ++++++++++++++++++---------- pytexexam/question.py | 29 +++++++++++++++++++ pytexexam/templates/answer.tex | 5 ++-- pytexexam/templates/exam.tex | 4 ++- pytexexam/templates/examsolution.tex | 3 ++ pytexexam/templates/mcq.tex | 8 ++++++ pytexexam/templates/mcq1.tex | 14 ---------- pytexexam/templates/mcq2.tex | 14 ---------- pytexexam/templates/mcq4.tex | 14 ---------- 10 files changed, 80 insertions(+), 59 deletions(-) create mode 100755 pytexexam/jinja2env.py create mode 100755 pytexexam/templates/mcq.tex delete mode 100755 pytexexam/templates/mcq1.tex delete mode 100755 pytexexam/templates/mcq2.tex delete mode 100755 pytexexam/templates/mcq4.tex diff --git a/pytexexam/jinja2env.py b/pytexexam/jinja2env.py new file mode 100755 index 0000000..75d04fa --- /dev/null +++ b/pytexexam/jinja2env.py @@ -0,0 +1,6 @@ +from jinja2 import Environment, PackageLoader + +jinja_env = Environment( + loader=PackageLoader('pytexexam', 'templates'), + autoescape=False +) diff --git a/pytexexam/latexexam.py b/pytexexam/latexexam.py index 0282bbc..2e37a12 100755 --- a/pytexexam/latexexam.py +++ b/pytexexam/latexexam.py @@ -1,32 +1,42 @@ +from typing import List + +from jinja2env import jinja_env from latexpaper import LatexPaper +from pytexexam import Question class LatexExamPaper(LatexPaper): def __init__(self): self.preamble = "" self.header = "" - self.questions = list() + self.questions: List[Question] = list() self.footer = "" - def __print_question(self): - pass - def get_latex_string(self) -> str: - pass + question_str = "" + for question in self.questions: + question_str += (question.print_question_latex() + "\n\n") + + return jinja_env.get_template("exam.tex").render( + user_preamble=self.preamble, + exam_header=self.header, + question_str=question_str + ) class LatexExamAnswer(LatexPaper): def __init__(self): self.preamble = "" self.header = "" - self.questions = list() + self.questions: List[Question] = list() self.footer = "" - def __print_answer(self): - pass - def get_latex_string(self) -> str: - pass + return jinja_env.get_template("answer.tex").render( + user_preamble=self.preamble, + exam_header=self.header, + questions=self.questions + ) class LatexExamSolution(LatexPaper): @@ -36,8 +46,12 @@ def __init__(self): self.questions = list() self.footer = "" - def __print_solution(self): - pass - def get_latex_string(self) -> str: - pass + solution_str = "" + for question in self.questions: + solution_str += (question.print_solution_latex() + "\n\n") + return jinja_env.get_template("exam.tex").render( + user_preamble=self.preamble, + exam_header=self.header, + question_str=solution_str + ) diff --git a/pytexexam/question.py b/pytexexam/question.py index 3bd285f..7ebe977 100755 --- a/pytexexam/question.py +++ b/pytexexam/question.py @@ -1,6 +1,7 @@ import string from random import SystemRandom +from jinja2env import jinja_env from .answer import Answer from typing import List @@ -44,3 +45,31 @@ def __get_answer_key() -> List[str]: def shuffle_answer(self): SystemRandom().shuffle(self.answers) + + def get_true_answer_key(self) -> str: + true_answer = "" + for answer in self.answers: + if answer.is_true_answer: + true_answer += answer.answer_key + return true_answer + + def print_question_latex(self) -> str: + table_column = "" + for i in range(0, self.answer_column): + column_size = 1 / self.answer_column + table_column += f"S{{m{{ {column_size}\\linewidth }} }} " + answer_string = "" + for i, answer in enumerate(self.answers): + seperator = "\\\\\n" if((i+1) % self.answer_column == 0) else "&" + answer_string += f"\\textbf{{ {answer.answer_key} }}. {answer.answer} {seperator} " + return jinja_env.get_template("mcq.tex").render( + question=self.question, + table_column=table_column, + answer_string=answer_string + ) + + def print_solution_latex(self) -> str: + return jinja_env.get_template("mcqsolution.tex").render( + question=self.print_question_latex(), + solution=self.solution + ) \ No newline at end of file diff --git a/pytexexam/templates/answer.tex b/pytexexam/templates/answer.tex index baab475..cf5aa48 100755 --- a/pytexexam/templates/answer.tex +++ b/pytexexam/templates/answer.tex @@ -1,13 +1,14 @@ \documentclass{article} \usepackage[utf8]{inputenc} \usepackage{multicol} - +\linespread{1.5} +{{user_preamble}} \begin{document} {{exam_header | indent(4, False)}} \begin{multicols}{5} {% for question in questions %} - \textbf{ {{loop.index}} }: {{ question.get_true_answer() }} + \textbf{ {{loop.index}} }: {{ question.get_true_answer_key }} {% endfor %} \end{multicols} \end{document} \ No newline at end of file diff --git a/pytexexam/templates/exam.tex b/pytexexam/templates/exam.tex index 84e904c..bde6f1d 100755 --- a/pytexexam/templates/exam.tex +++ b/pytexexam/templates/exam.tex @@ -1,9 +1,11 @@ \documentclass[12pt,a4paper,notitlepage]{article} -\usepackage[utf8]{vietnam} \usepackage{graphicx} \usepackage{array} \linespread{1.5} \newtheorem{question}{ {{question_theorem}} } +\usepackage{cellspace} +\setlength\cellspacetoplimit{5pt} +\setlength\cellspacebottomlimit{5pt} {{user_preamble}} \begin{document} {{exam_header | indent(4, False)}} diff --git a/pytexexam/templates/examsolution.tex b/pytexexam/templates/examsolution.tex index 2bcfd8a..549a355 100755 --- a/pytexexam/templates/examsolution.tex +++ b/pytexexam/templates/examsolution.tex @@ -5,6 +5,9 @@ \linespread{1.5} \newtheorem{question}{ {{question_theorem}} } \newtheorem{solution}{ {{solution_theorem}} } +\usepackage{cellspace} +\setlength\cellspacetoplimit{5pt} +\setlength\cellspacebottomlimit{5pt} {{ user_preamble }} \begin{document} {{ exam_header | indent(4, False)}} diff --git a/pytexexam/templates/mcq.tex b/pytexexam/templates/mcq.tex new file mode 100755 index 0000000..8c7b644 --- /dev/null +++ b/pytexexam/templates/mcq.tex @@ -0,0 +1,8 @@ +\begin{question} + {{ question }} + + \begin{tabular}{ {{table_column}} } + {{ answer_string }} + \end{tabular} +\end{question} + diff --git a/pytexexam/templates/mcq1.tex b/pytexexam/templates/mcq1.tex deleted file mode 100755 index 8aaa34c..0000000 --- a/pytexexam/templates/mcq1.tex +++ /dev/null @@ -1,14 +0,0 @@ -\begin{question} - {{ question }} - - \begin{tabular}{ m{\linewidth}} - A. {{ answer_a }} - \\ - B. {{ answer_b }} - \\ - C. {{ answer_c }} - \\ - D. {{ answer_d }} - \\ - \end{tabular} -\end{question} \ No newline at end of file diff --git a/pytexexam/templates/mcq2.tex b/pytexexam/templates/mcq2.tex deleted file mode 100755 index 2da08c3..0000000 --- a/pytexexam/templates/mcq2.tex +++ /dev/null @@ -1,14 +0,0 @@ -\begin{question} - {{ question }} - - \begin{tabular}{ m{0.5\linewidth} m{0.5\linewidth} } - A. {{ answer_a }} - & - B. {{ answer_b }} - \\ - C. {{ answer_c }} - & - D. {{ answer_d }} - \\ - \end{tabular} -\end{question} \ No newline at end of file diff --git a/pytexexam/templates/mcq4.tex b/pytexexam/templates/mcq4.tex deleted file mode 100755 index 48e5184..0000000 --- a/pytexexam/templates/mcq4.tex +++ /dev/null @@ -1,14 +0,0 @@ -\begin{question} - {{ question }} - - \begin{tabular}{ m{0.25\linewidth} m{0.25\linewidth} m{0.25\linewidth} m{0.25\linewidth}} - A. {{ answer_a }} - & - B. {{ answer_b }} - & - C. {{ answer_c }} - & - D. {{ answer_d }} - \\ - \end{tabular} -\end{question} \ No newline at end of file From 3bb3578e10741153d63db2d69da931ce96dda9b7 Mon Sep 17 00:00:00 2001 From: binh Date: Tue, 12 Jan 2021 10:20:31 +0700 Subject: [PATCH 4/8] Implement builder --- pytexexam/builder.py | 57 ++++++++++++++++++++++++++++ pytexexam/latexexam.py | 2 +- pytexexam/templates/exam.tex | 3 +- pytexexam/templates/examsolution.tex | 3 +- 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100755 pytexexam/builder.py diff --git a/pytexexam/builder.py b/pytexexam/builder.py new file mode 100755 index 0000000..c7048a1 --- /dev/null +++ b/pytexexam/builder.py @@ -0,0 +1,57 @@ +from typing import List + +from latexexam import LatexExamPaper, LatexExamAnswer, LatexExamSolution +from pytexexam import Question + + +class LatexExamBuilder: + def __init__(self): + self.preamble = "" + self.header = "" + self.questions: List[Question] = list() + self.footer = "" + self.export_type = "tex" + + def create_exam(self, file_dir: str): + exam = LatexExamPaper() + exam.preamble = self.preamble + exam.header = self.header + exam.questions = self.questions + exam.footer = self.footer + + if self.export_type == "tex": + exam.export_tex_file(file_dir) + elif self.export_type == "pdf": + exam.export_pdf_file(file_dir) + else: + exam.export_tex_file(file_dir) + + def create_answer(self, file_dir: str): + exam = LatexExamAnswer() + exam.preamble = self.preamble + exam.header = self.header + exam.questions = self.questions + exam.footer = self.footer + exam.export_tex_file(file_dir) + + if self.export_type == "tex": + exam.export_tex_file(file_dir) + elif self.export_type == "pdf": + exam.export_pdf_file(file_dir) + else: + exam.export_tex_file(file_dir) + + def create_solution(self, file_dir: str): + exam = LatexExamSolution() + exam.preamble = self.preamble + exam.header = self.header + exam.questions = self.questions + exam.footer = self.footer + exam.export_tex_file(file_dir) + + if self.export_type == "tex": + exam.export_tex_file(file_dir) + elif self.export_type == "pdf": + exam.export_pdf_file(file_dir) + else: + exam.export_tex_file(file_dir) diff --git a/pytexexam/latexexam.py b/pytexexam/latexexam.py index 2e37a12..7c1d82f 100755 --- a/pytexexam/latexexam.py +++ b/pytexexam/latexexam.py @@ -53,5 +53,5 @@ def get_latex_string(self) -> str: return jinja_env.get_template("exam.tex").render( user_preamble=self.preamble, exam_header=self.header, - question_str=solution_str + solution_str=solution_str ) diff --git a/pytexexam/templates/exam.tex b/pytexexam/templates/exam.tex index bde6f1d..2c87dde 100755 --- a/pytexexam/templates/exam.tex +++ b/pytexexam/templates/exam.tex @@ -9,7 +9,6 @@ {{user_preamble}} \begin{document} {{exam_header | indent(4, False)}} - {% for question_str in questions_str %} + {{ question_str | indent(4, False) }} - {% endfor %} \end{document} \ No newline at end of file diff --git a/pytexexam/templates/examsolution.tex b/pytexexam/templates/examsolution.tex index 549a355..ac8bf6a 100755 --- a/pytexexam/templates/examsolution.tex +++ b/pytexexam/templates/examsolution.tex @@ -11,7 +11,6 @@ {{ user_preamble }} \begin{document} {{ exam_header | indent(4, False)}} - {% for solution_str in solutions_str %} + {{ solution_str | indent(4, False)}} - {% endfor %} \end{document} \ No newline at end of file From 433a2dfcc4ddf3ba09c35b4621ed7662b92d2fb2 Mon Sep 17 00:00:00 2001 From: binh Date: Tue, 12 Jan 2021 14:52:48 +0700 Subject: [PATCH 5/8] add method to LatexExamBuilder class --- pytexexam/builder.py | 31 ++++++++++++------------------- pytexexam/latexexamutil.py | 8 ++++---- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/pytexexam/builder.py b/pytexexam/builder.py index c7048a1..c16c66a 100755 --- a/pytexexam/builder.py +++ b/pytexexam/builder.py @@ -1,6 +1,7 @@ from typing import List from latexexam import LatexExamPaper, LatexExamAnswer, LatexExamSolution +from latexpaper import LatexPaper from pytexexam import Question @@ -18,13 +19,7 @@ def create_exam(self, file_dir: str): exam.header = self.header exam.questions = self.questions exam.footer = self.footer - - if self.export_type == "tex": - exam.export_tex_file(file_dir) - elif self.export_type == "pdf": - exam.export_pdf_file(file_dir) - else: - exam.export_tex_file(file_dir) + self.__export(exam, file_dir) def create_answer(self, file_dir: str): exam = LatexExamAnswer() @@ -32,14 +27,7 @@ def create_answer(self, file_dir: str): exam.header = self.header exam.questions = self.questions exam.footer = self.footer - exam.export_tex_file(file_dir) - - if self.export_type == "tex": - exam.export_tex_file(file_dir) - elif self.export_type == "pdf": - exam.export_pdf_file(file_dir) - else: - exam.export_tex_file(file_dir) + self.__export(exam, file_dir) def create_solution(self, file_dir: str): exam = LatexExamSolution() @@ -47,11 +35,16 @@ def create_solution(self, file_dir: str): exam.header = self.header exam.questions = self.questions exam.footer = self.footer - exam.export_tex_file(file_dir) + self.__export(exam, file_dir) + def __export(self, paper: LatexPaper, file_dir: str): if self.export_type == "tex": - exam.export_tex_file(file_dir) + paper.export_tex_file(file_dir) elif self.export_type == "pdf": - exam.export_pdf_file(file_dir) + paper.export_pdf_file(file_dir) else: - exam.export_tex_file(file_dir) + paper.export_tex_file(file_dir) + + def add_question(self, question: str, answer: List[str], true_answer: str, answer_column: int, solution: str = ""): + question = Question(question, answer, true_answer, solution, answer_column) + self.questions.append(question) \ No newline at end of file diff --git a/pytexexam/latexexamutil.py b/pytexexam/latexexamutil.py index 73f54ae..4766bed 100755 --- a/pytexexam/latexexamutil.py +++ b/pytexexam/latexexamutil.py @@ -5,8 +5,8 @@ def ams_math_package() -> str: """ Returns the command lines needed to type math formula in latex """ - return inspect.cleandoc(""" - \\usepackage{amsmath} - \\usepackage{amsfonts} - \\usepackage{amssymb} + return inspect.cleandoc(r""" + \usepackage{amsmath} + \usepackage{amsfonts} + \usepackage{amssymb} """) From abe7598d2f182f87ef818363a654b6bd765c985d Mon Sep 17 00:00:00 2001 From: binh Date: Tue, 12 Jan 2021 21:34:48 +0700 Subject: [PATCH 6/8] Add test to pytexexam Complete pytexexam 2.0 code --- pytexexam/__init__.py | 6 +- pytexexam/builder.py | 4 +- pytexexam/exam.py | 3 +- pytexexam/latexexam.py | 15 +- pytexexam/latexpaper.py | 4 +- pytexexam/question.py | 6 +- pytexexam/templates/answer.tex | 4 +- pytexexam/templates/exam.tex | 4 +- pytexexam/templates/examsolution.tex | 16 -- pytexexam/templates/mcqsolution.tex | 4 +- test/answer1.aux | 1 - test/answer1.log | 144 ---------- test/answer1.pdf | Bin 27437 -> 0 bytes test/answer1.tex | 21 -- test/example.py | 60 +--- test/solution1.aux | 1 - test/solution1.log | 408 --------------------------- test/solution1.pdf | Bin 22050 -> 0 bytes test/solution1.tex | 79 ------ test/test1.aux | 1 - test/test1.log | 407 -------------------------- test/test1.pdf | Bin 15575 -> 0 bytes test/test1.tex | 62 ---- 23 files changed, 44 insertions(+), 1206 deletions(-) delete mode 100755 pytexexam/templates/examsolution.tex delete mode 100755 test/answer1.aux delete mode 100755 test/answer1.log delete mode 100755 test/answer1.pdf delete mode 100755 test/answer1.tex delete mode 100755 test/solution1.aux delete mode 100755 test/solution1.log delete mode 100755 test/solution1.pdf delete mode 100755 test/solution1.tex delete mode 100755 test/test1.aux delete mode 100755 test/test1.log delete mode 100755 test/test1.pdf delete mode 100755 test/test1.tex diff --git a/pytexexam/__init__.py b/pytexexam/__init__.py index a6b2c00..8b13789 100755 --- a/pytexexam/__init__.py +++ b/pytexexam/__init__.py @@ -1,5 +1 @@ -from pytexexam.question import Question -from pytexexam.exam import Exam -from pytexexam.latexexam import LatexExam -import pytexexam.latexexamutil -from pytexexam.answer import Answer + diff --git a/pytexexam/builder.py b/pytexexam/builder.py index c16c66a..87c94ee 100755 --- a/pytexexam/builder.py +++ b/pytexexam/builder.py @@ -2,7 +2,7 @@ from latexexam import LatexExamPaper, LatexExamAnswer, LatexExamSolution from latexpaper import LatexPaper -from pytexexam import Question +from question import Question class LatexExamBuilder: @@ -47,4 +47,4 @@ def __export(self, paper: LatexPaper, file_dir: str): def add_question(self, question: str, answer: List[str], true_answer: str, answer_column: int, solution: str = ""): question = Question(question, answer, true_answer, solution, answer_column) - self.questions.append(question) \ No newline at end of file + self.questions.append(question) diff --git a/pytexexam/exam.py b/pytexexam/exam.py index 64267e7..94f1c56 100755 --- a/pytexexam/exam.py +++ b/pytexexam/exam.py @@ -1,6 +1,7 @@ from random import SystemRandom from typing import List -from .question import Question + +from question import Question class Exam: diff --git a/pytexexam/latexexam.py b/pytexexam/latexexam.py index 7c1d82f..bb13028 100755 --- a/pytexexam/latexexam.py +++ b/pytexexam/latexexam.py @@ -2,7 +2,7 @@ from jinja2env import jinja_env from latexpaper import LatexPaper -from pytexexam import Question +from question import Question class LatexExamPaper(LatexPaper): @@ -11,6 +11,7 @@ def __init__(self): self.header = "" self.questions: List[Question] = list() self.footer = "" + self.question_translation = "Question" def get_latex_string(self) -> str: question_str = "" @@ -18,9 +19,11 @@ def get_latex_string(self) -> str: question_str += (question.print_question_latex() + "\n\n") return jinja_env.get_template("exam.tex").render( + question_theorem=self.question_translation, user_preamble=self.preamble, exam_header=self.header, - question_str=question_str + question_str=question_str, + exam_footer=self.footer ) @@ -35,7 +38,8 @@ def get_latex_string(self) -> str: return jinja_env.get_template("answer.tex").render( user_preamble=self.preamble, exam_header=self.header, - questions=self.questions + questions=self.questions, + exam_footer=self.footer ) @@ -45,13 +49,16 @@ def __init__(self): self.header = "" self.questions = list() self.footer = "" + self.question_translation = "Question" def get_latex_string(self) -> str: solution_str = "" for question in self.questions: solution_str += (question.print_solution_latex() + "\n\n") return jinja_env.get_template("exam.tex").render( + question_theorem=self.question_translation, user_preamble=self.preamble, exam_header=self.header, - solution_str=solution_str + question_str=solution_str, + exam_footer=self.footer ) diff --git a/pytexexam/latexpaper.py b/pytexexam/latexpaper.py index 747bbb9..3eff8ee 100755 --- a/pytexexam/latexpaper.py +++ b/pytexexam/latexpaper.py @@ -6,10 +6,10 @@ def get_latex_string(self) -> str: pass def export_tex_file(self, file_dir: str): - file = open(file_dir, "w") + file = open(f"{file_dir}.tex", "w") file.write(self.get_latex_string()) file.close() def export_pdf_file(self, file_dir: str): self.export_tex_file(file_dir) - os.system(f"pdflatex {file_dir}") + os.system(f"pdflatex {file_dir}.tex") diff --git a/pytexexam/question.py b/pytexexam/question.py index 7ebe977..e83020a 100755 --- a/pytexexam/question.py +++ b/pytexexam/question.py @@ -1,8 +1,8 @@ import string from random import SystemRandom +from answer import Answer from jinja2env import jinja_env -from .answer import Answer from typing import List @@ -58,10 +58,12 @@ def print_question_latex(self) -> str: for i in range(0, self.answer_column): column_size = 1 / self.answer_column table_column += f"S{{m{{ {column_size}\\linewidth }} }} " + answer_string = "" for i, answer in enumerate(self.answers): seperator = "\\\\\n" if((i+1) % self.answer_column == 0) else "&" answer_string += f"\\textbf{{ {answer.answer_key} }}. {answer.answer} {seperator} " + return jinja_env.get_template("mcq.tex").render( question=self.question, table_column=table_column, @@ -72,4 +74,4 @@ def print_solution_latex(self) -> str: return jinja_env.get_template("mcqsolution.tex").render( question=self.print_question_latex(), solution=self.solution - ) \ No newline at end of file + ) diff --git a/pytexexam/templates/answer.tex b/pytexexam/templates/answer.tex index cf5aa48..1b32b38 100755 --- a/pytexexam/templates/answer.tex +++ b/pytexexam/templates/answer.tex @@ -8,7 +8,9 @@ \begin{multicols}{5} {% for question in questions %} - \textbf{ {{loop.index}} }: {{ question.get_true_answer_key }} + \textbf{ {{loop.index}} }: {{ question.get_true_answer_key() }} {% endfor %} \end{multicols} + + {{ exam_footer | indent(4, False) }} \end{document} \ No newline at end of file diff --git a/pytexexam/templates/exam.tex b/pytexexam/templates/exam.tex index 2c87dde..a689fc5 100755 --- a/pytexexam/templates/exam.tex +++ b/pytexexam/templates/exam.tex @@ -8,7 +8,9 @@ \setlength\cellspacebottomlimit{5pt} {{user_preamble}} \begin{document} - {{exam_header | indent(4, False)}} + {{ exam_header | indent(4, False) }} {{ question_str | indent(4, False) }} + + {{ exam_footer | indent(4, False) }} \end{document} \ No newline at end of file diff --git a/pytexexam/templates/examsolution.tex b/pytexexam/templates/examsolution.tex deleted file mode 100755 index ac8bf6a..0000000 --- a/pytexexam/templates/examsolution.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass[12pt,a4paper,notitlepage]{article} -\usepackage[utf8]{vietnam} -\usepackage{graphicx} -\usepackage{array} -\linespread{1.5} -\newtheorem{question}{ {{question_theorem}} } -\newtheorem{solution}{ {{solution_theorem}} } -\usepackage{cellspace} -\setlength\cellspacetoplimit{5pt} -\setlength\cellspacebottomlimit{5pt} -{{ user_preamble }} -\begin{document} - {{ exam_header | indent(4, False)}} - - {{ solution_str | indent(4, False)}} -\end{document} \ No newline at end of file diff --git a/pytexexam/templates/mcqsolution.tex b/pytexexam/templates/mcqsolution.tex index 133b350..20ad129 100755 --- a/pytexexam/templates/mcqsolution.tex +++ b/pytexexam/templates/mcqsolution.tex @@ -1,5 +1,3 @@ {{ question }} -\begin{solution} - {{ solution }} -\end{solution} \ No newline at end of file +{{ solution }} diff --git a/test/answer1.aux b/test/answer1.aux deleted file mode 100755 index f23e546..0000000 --- a/test/answer1.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/test/answer1.log b/test/answer1.log deleted file mode 100755 index 2e94092..0000000 --- a/test/answer1.log +++ /dev/null @@ -1,144 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 21 DEC 2020 15:34 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**answer1.pdf -(./answer1.pdf -LaTeX2e <2020-02-02> patch level 2 -L3 programming layer <2020-02-14> -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2019/12/20 v1.4l Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) -) -\c@part=\count167 -\c@section=\count168 -\c@subsection=\count169 -\c@subsubsection=\count170 -\c@paragraph=\count171 -\c@subparagraph=\count172 -\c@figure=\count173 -\c@table=\count174 -\abovecaptionskip=\skip47 -\belowcaptionskip=\skip48 -\bibindent=\dimen134 -) -(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -Package: inputenc 2018/08/11 v1.3c Input encoding file -\inpenc@prehook=\toks14 -\inpenc@posthook=\toks15 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty -Package: multicol 2019/12/09 v1.8y multicolumn formatting (FMi) -\c@tracingmulticols=\count175 -\mult@box=\box45 -\multicol@leftmargin=\dimen135 -\c@unbalance=\count176 -\c@collectmore=\count177 -\doublecol@number=\count178 -\multicoltolerance=\count179 -\multicolpretolerance=\count180 -\full@width=\dimen136 -\page@free=\dimen137 -\premulticols=\dimen138 -\postmulticols=\dimen139 -\multicolsep=\skip49 -\multicolbaselineskip=\skip50 -\partial@page=\box46 -\last@line=\box47 -\maxbalancingoverflow=\dimen140 -\mult@rightbox=\box48 -\mult@grightbox=\box49 -\mult@gfirstbox=\box50 -\mult@firstbox=\box51 -\@tempa=\box52 -\@tempa=\box53 -\@tempa=\box54 -\@tempa=\box55 -\@tempa=\box56 -\@tempa=\box57 -\@tempa=\box58 -\@tempa=\box59 -\@tempa=\box60 -\@tempa=\box61 -\@tempa=\box62 -\@tempa=\box63 -\@tempa=\box64 -\@tempa=\box65 -\@tempa=\box66 -\@tempa=\box67 -\@tempa=\box68 -\@tempa=\box69 -\@tempa=\box70 -\@tempa=\box71 -\@tempa=\box72 -\@tempa=\box73 -\@tempa=\box74 -\@tempa=\box75 -\@tempa=\box76 -\@tempa=\box77 -\@tempa=\box78 -\@tempa=\box79 -\@tempa=\box80 -\@tempa=\box81 -\@tempa=\box82 -\@tempa=\box83 -\@tempa=\box84 -\@tempa=\box85 -\@tempa=\box86 -\@tempa=\box87 -\@tempa=\box88 -\c@minrows=\count181 -\c@columnbadness=\count182 -\c@finalcolumnbadness=\count183 -\last@try=\dimen141 -\multicolovershoot=\dimen142 -\multicolundershoot=\dimen143 -\mult@nat@firstbox=\box89 -\colbreak@box=\box90 -\mc@col@check@num=\count184 -) -(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def -File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode -\l__kernel_color_stack_int=\count185 -\l__pdf_internal_box=\box91 -) -(./answer1.aux) -\openout1 = `answer1.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. - [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] -(./answer1.aux) ) -Here is how much of TeX's memory you used: - 511 strings out of 482671 - 8488 string characters out of 5955619 - 237638 words of memory out of 5000000 - 15751 multiletter control sequences out of 15000+600000 - 532953 words of font info for 26 fonts, out of 8000000 for 9000 - 264 hyphenation exceptions out of 8191 - 25i,4n,20p,153b,158s stack positions out of 5000i,500n,10000p,200000b,80000s - -Output written on answer1.pdf (1 page, 27437 bytes). -PDF statistics: - 20 PDF objects out of 1000 (max. 8388607) - 13 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 1 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/test/answer1.pdf b/test/answer1.pdf deleted file mode 100755 index a3002bda4dcea3f16718969dc0bb1241e2be8313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27437 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 patch level 2 -L3 programming layer <2020-02-14> -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2019/12/20 v1.4l Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo -File: size12.clo 2019/12/20 v1.4l Standard LaTeX file (size option) -) -\c@part=\count167 -\c@section=\count168 -\c@subsection=\count169 -\c@subsubsection=\count170 -\c@paragraph=\count171 -\c@subparagraph=\count172 -\c@figure=\count173 -\c@table=\count174 -\abovecaptionskip=\skip47 -\belowcaptionskip=\skip48 -\bibindent=\dimen134 -) -(/usr/share/texlive/texmf-dist/tex/latex/vntex/vietnam.sty -Package: vietnam 2009/07/12 v1.3 support for Vietnamese - -(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty -Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -Package: fontenc 2020/02/11 v2.0o Standard LaTeX package - -(/usr/share/texlive/texmf-dist/tex/latex/vntex/t5enc.def -File: t5enc.def 2006/11/21 v1.4 Vietnamese T5 encoding -Now handling font encoding T5 ... -... processing UTF-8 mapping file for font encoding T5 - -(/usr/share/texlive/texmf-dist/tex/latex/vntex/t5enc.dfu -File: t5enc.dfu 2006/08/19 v1.1 UTF8 support for Vietnamese - defining Unicode char U+00AB (decimal 171) - defining Unicode char U+00BB (decimal 187) - defining Unicode char U+00C0 (decimal 192) - defining Unicode char U+00C1 (decimal 193) - defining Unicode char U+00C2 (decimal 194) - defining Unicode char U+00C3 (decimal 195) - defining Unicode char U+00C8 (decimal 200) - defining Unicode char U+00C9 (decimal 201) - defining Unicode char U+00CA (decimal 202) - defining Unicode char U+00CC (decimal 204) - defining Unicode char U+00CD (decimal 205) - defining Unicode char U+00D2 (decimal 210) - defining Unicode char U+00D3 (decimal 211) - defining Unicode char U+00D4 (decimal 212) - defining Unicode char U+00D5 (decimal 213) - defining Unicode char U+00D9 (decimal 217) - defining Unicode char U+00DA (decimal 218) - defining Unicode char U+00DD (decimal 221) - defining Unicode char U+00E0 (decimal 224) - defining Unicode char U+00E1 (decimal 225) - defining Unicode char U+00E2 (decimal 226) - defining Unicode char U+00E3 (decimal 227) - defining Unicode char U+00E8 (decimal 232) - defining Unicode char U+00E9 (decimal 233) - defining Unicode char U+00EA (decimal 234) - defining Unicode char U+00EC (decimal 236) - defining Unicode char U+00ED (decimal 237) - defining Unicode char U+00F2 (decimal 242) - defining Unicode char U+00F3 (decimal 243) - defining Unicode char U+00F4 (decimal 244) - defining Unicode char U+00F5 (decimal 245) - defining Unicode char U+00F9 (decimal 249) - defining Unicode char U+00FA (decimal 250) - defining Unicode char U+00FD (decimal 253) - defining Unicode char U+0102 (decimal 258) - defining Unicode char U+0103 (decimal 259) - defining Unicode char U+0110 (decimal 272) - defining Unicode char U+0111 (decimal 273) - defining Unicode char U+0128 (decimal 296) - defining Unicode char U+0129 (decimal 297) - defining Unicode char U+0131 (decimal 305) - defining Unicode char U+0168 (decimal 360) - defining Unicode char U+0169 (decimal 361) - defining Unicode char U+01A0 (decimal 416) - defining Unicode char U+01A1 (decimal 417) - defining Unicode char U+01AF (decimal 431) - defining Unicode char U+01B0 (decimal 432) - defining Unicode char U+1EA0 (decimal 7840) - defining Unicode char U+1EA1 (decimal 7841) - defining Unicode char U+1EA2 (decimal 7842) - defining Unicode char U+1EA3 (decimal 7843) - defining Unicode char U+1EA4 (decimal 7844) - defining Unicode char U+1EA5 (decimal 7845) - defining Unicode char U+1EA6 (decimal 7846) - defining Unicode char U+1EA7 (decimal 7847) - defining Unicode char U+1EA8 (decimal 7848) - defining Unicode char U+1EA9 (decimal 7849) - defining Unicode char U+1EAA (decimal 7850) - defining Unicode char U+1EAB (decimal 7851) - defining Unicode char U+1EAC (decimal 7852) - defining Unicode char U+1EAD (decimal 7853) - defining Unicode char U+1EAE (decimal 7854) - defining Unicode char U+1EAF (decimal 7855) - defining Unicode char U+1EB0 (decimal 7856) - defining Unicode char U+1EB1 (decimal 7857) - defining Unicode char U+1EB2 (decimal 7858) - defining Unicode char U+1EB3 (decimal 7859) - defining Unicode char U+1EB4 (decimal 7860) - defining Unicode char U+1EB5 (decimal 7861) - defining Unicode char U+1EB6 (decimal 7862) - defining Unicode char U+1EB7 (decimal 7863) - defining Unicode char U+1EB8 (decimal 7864) - defining Unicode char U+1EB9 (decimal 7865) - defining Unicode char U+1EBA (decimal 7866) - defining Unicode char U+1EBB (decimal 7867) - defining Unicode char U+1EBC (decimal 7868) - defining Unicode char U+1EBD (decimal 7869) - defining Unicode char U+1EBE (decimal 7870) - defining Unicode char U+1EBF (decimal 7871) - defining Unicode char U+1EC0 (decimal 7872) - defining Unicode char U+1EC1 (decimal 7873) - defining Unicode char U+1EC2 (decimal 7874) - defining Unicode char U+1EC3 (decimal 7875) - defining Unicode char U+1EC4 (decimal 7876) - defining Unicode char U+1EC5 (decimal 7877) - defining Unicode char U+1EC6 (decimal 7878) - defining Unicode char U+1EC7 (decimal 7879) - defining Unicode char U+1EC8 (decimal 7880) - defining Unicode char U+1EC9 (decimal 7881) - defining Unicode char U+1ECA (decimal 7882) - defining Unicode char U+1ECB (decimal 7883) - defining Unicode char U+1ECC (decimal 7884) - defining Unicode char U+1ECD (decimal 7885) - defining Unicode char U+1ECE (decimal 7886) - defining Unicode char U+1ECF (decimal 7887) - defining Unicode char U+1ED0 (decimal 7888) - defining Unicode char U+1ED1 (decimal 7889) - defining Unicode char U+1ED2 (decimal 7890) - defining Unicode char U+1ED3 (decimal 7891) - defining Unicode char U+1ED4 (decimal 7892) - defining Unicode char U+1ED5 (decimal 7893) - defining Unicode char U+1ED6 (decimal 7894) - defining Unicode char U+1ED7 (decimal 7895) - defining Unicode char U+1ED8 (decimal 7896) - defining Unicode char U+1ED9 (decimal 7897) - defining Unicode char U+1EDA (decimal 7898) - defining Unicode char U+1EDB (decimal 7899) - defining Unicode char U+1EDC (decimal 7900) - defining Unicode char U+1EDD (decimal 7901) - defining Unicode char U+1EDE (decimal 7902) - defining Unicode char U+1EDF (decimal 7903) - defining Unicode char U+1EE0 (decimal 7904) - defining Unicode char U+1EE1 (decimal 7905) - defining Unicode char U+1EE2 (decimal 7906) - defining Unicode char U+1EE3 (decimal 7907) - defining Unicode char U+1EE4 (decimal 7908) - defining Unicode char U+1EE5 (decimal 7909) - defining Unicode char U+1EE6 (decimal 7910) - defining Unicode char U+1EE7 (decimal 7911) - defining Unicode char U+1EE8 (decimal 7912) - defining Unicode char U+1EE9 (decimal 7913) - defining Unicode char U+1EEA (decimal 7914) - defining Unicode char U+1EEB (decimal 7915) - defining Unicode char U+1EEC (decimal 7916) - defining Unicode char U+1EED (decimal 7917) - defining Unicode char U+1EEE (decimal 7918) - defining Unicode char U+1EEF (decimal 7919) - defining Unicode char U+1EF0 (decimal 7920) - defining Unicode char U+1EF1 (decimal 7921) - defining Unicode char U+1EF2 (decimal 7922) - defining Unicode char U+1EF3 (decimal 7923) - defining Unicode char U+1EF4 (decimal 7924) - defining Unicode char U+1EF5 (decimal 7925) - defining Unicode char U+1EF6 (decimal 7926) - defining Unicode char U+1EF7 (decimal 7927) - defining Unicode char U+1EF8 (decimal 7928) - defining Unicode char U+1EF9 (decimal 7929) - defining Unicode char U+200C (decimal 8204) - defining Unicode char U+2013 (decimal 8211) - defining Unicode char U+2014 (decimal 8212) - defining Unicode char U+2018 (decimal 8216) - defining Unicode char U+2019 (decimal 8217) - defining Unicode char U+201A (decimal 8218) - defining Unicode char U+201C (decimal 8220) - defining Unicode char U+201D (decimal 8221) - defining Unicode char U+201E (decimal 8222) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+2039 (decimal 8249) - defining Unicode char U+203A (decimal 8250) - defining Unicode char U+2423 (decimal 9251) -)) -LaTeX Font Info: Trying to load font information for T5+cmr on input line 11 -2. - -(/usr/share/texlive/texmf-dist/tex/latex/vntex/t5cmr.fd -File: t5cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions -)) -(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -Package: inputenc 2018/08/11 v1.3c Input encoding file -\inpenc@prehook=\toks14 -\inpenc@posthook=\toks15 -) -(/usr/share/texlive/texmf-dist/tex/latex/vntex/vncaps.tex -File: vncaps.tex 2006/06/07 v1.1 Captions in Vietnamese -)) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks16 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 105. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen135 -\Gin@req@width=\dimen136 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty -Package: array 2019/08/31 v2.4l Tabular extension package (FMi) -\col@sep=\dimen137 -\ar@mcellbox=\box45 -\extrarowheight=\dimen138 -\NC@list=\toks17 -\extratabsurround=\skip49 -\backup@length=\skip50 -\ar@cellbox=\box46 -) -\c@question=\count175 -\c@solution=\count176 - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2020/01/20 v2.17e AMS math features -\@mathmargin=\skip51 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks18 -\ex@=\dimen139 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count177 -LaTeX Info: Redefining \frac on input line 227. -\uproot@=\count178 -\leftroot@=\count179 -LaTeX Info: Redefining \overline on input line 389. -\classnum@=\count180 -\DOTSCASE@=\count181 -LaTeX Info: Redefining \ldots on input line 486. -LaTeX Info: Redefining \dots on input line 489. -LaTeX Info: Redefining \cdots on input line 610. -\Mathstrutbox@=\box47 -\strutbox@=\box48 -\big@size=\dimen141 -LaTeX Font Info: Redeclaring font encoding OML on input line 733. -LaTeX Font Info: Redeclaring font encoding OMS on input line 734. -\macc@depth=\count182 -\c@MaxMatrixCols=\count183 -\dotsspace@=\muskip16 -\c@parentequation=\count184 -\dspbrk@lvl=\count185 -\tag@help=\toks19 -\row@=\count186 -\column@=\count187 -\maxfields@=\count188 -\andhelp@=\toks20 -\eqnshift@=\dimen142 -\alignsep@=\dimen143 -\tagshift@=\dimen144 -\tagwidth@=\dimen145 -\totwidth@=\dimen146 -\lineht@=\dimen147 -\@envbody=\toks21 -\multlinegap=\skip52 -\multlinetaggap=\skip53 -\mathdisplay@stack=\toks22 -LaTeX Info: Redefining \[ on input line 2859. -LaTeX Info: Redefining \] on input line 2860. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -Package: amssymb 2013/01/14 v3.01 AMS font symbols -) -(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def -File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode -\l__kernel_color_stack_int=\count189 -\l__pdf_internal_box=\box49 -) -(./solution1.aux) -\openout1 = `solution1.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. -LaTeX Font Info: Checking defaults for T5/cmr/m/n on input line 11. -LaTeX Font Info: ... okay on input line 11. - -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count190 -\scratchdimen=\dimen148 -\scratchbox=\box50 -\nofMPsegments=\count191 -\nofMParguments=\count192 -\everyMPshowfont=\toks23 -\MPscratchCnt=\count193 -\MPscratchDim=\dimen149 -\MPnumerator=\count194 -\makeMPintoPDFobject=\count195 -\everyMPtoPDFconversion=\toks24 -) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty -Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -85. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -LaTeX Font Info: Trying to load font information for U+msa on input line 21. - - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Trying to load font information for U+msb on input line 21. - - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) -Overfull \hbox (29.62482pt too wide) in paragraph at lines 21--31 -[][] - [] - - -Overfull \hbox (65.62482pt too wide) in paragraph at lines 42--52 -[][] - [] - - -Overfull \hbox (41.62482pt too wide) in paragraph at lines 61--71 -[][] - [] - -[1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./solution1.aux) ) -Here is how much of TeX's memory you used: - 3073 strings out of 482671 - 38010 string characters out of 5955619 - 264389 words of memory out of 5000000 - 18216 multiletter control sequences out of 15000+600000 - 540738 words of font info for 46 fonts, out of 8000000 for 9000 - 264 hyphenation exceptions out of 8191 - 33i,8n,29p,226b,159s stack positions out of 5000i,500n,10000p,200000b,80000s - -Output written on solution1.pdf (1 page, 22050 bytes). -PDF statistics: - 20 PDF objects out of 1000 (max. 8388607) - 13 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 1 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/test/solution1.pdf b/test/solution1.pdf deleted file mode 100755 index 77dc22dd802e8840b88f8e5fbeea6c17abb50267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22050 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 diff --git a/test/solution1.tex b/test/solution1.tex deleted file mode 100755 index 3d85f2a..0000000 --- a/test/solution1.tex +++ /dev/null @@ -1,79 +0,0 @@ -\documentclass[12pt,a4paper,notitlepage]{article} -\usepackage[utf8]{vietnam} -\usepackage{graphicx} -\usepackage{array} -\linespread{1.5} -\newtheorem{question}{ Question } -\newtheorem{solution}{ Solution } -\usepackage{amsmath} -\usepackage{amsfonts} -\usepackage{amssymb} -\begin{document} - \textbf { - \begin{center} - {\LARGE Simple exam } - \end{center} - } - - \begin{question} - Question 1 ? - - \begin{tabular}{ m{\linewidth}} - A. Answer 2 - \\ - B. Answer 4 - \\ - C. Answer 1 - \\ - D. Answer 3 - \\ - \end{tabular} - \end{question} - - \begin{solution} - - Đây là đáp án chi tiết của câu hỏi đầu tiên. - - \end{solution} - - \begin{question} - Question 3 ? - - \begin{tabular}{ m{0.25\linewidth} m{0.25\linewidth} m{0.25\linewidth} m{0.25\linewidth}} - A. Answer 3 - & - B. Answer 1 - & - C. Answer 4 - & - D. Answer 2 - \\ - \end{tabular} - \end{question} - - \begin{solution} - - \end{solution} - - \begin{question} - Question 2 ? - - \begin{tabular}{ m{0.5\linewidth} m{0.5\linewidth} } - A. Answer 3 - & - B. Answer 4 - \\ - C. Answer 2 - & - D. Answer 1 - \\ - \end{tabular} - \end{question} - - \begin{solution} - - Đây là đáp án chi tiết của câu hỏi thứ hai. - - \end{solution} - -\end{document} \ No newline at end of file diff --git a/test/test1.aux b/test/test1.aux deleted file mode 100755 index f23e546..0000000 --- a/test/test1.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/test/test1.log b/test/test1.log deleted file mode 100755 index 11cb246..0000000 --- a/test/test1.log +++ /dev/null @@ -1,407 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 21 DEC 2020 15:34 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**test1.pdf -(./test1.pdf -LaTeX2e <2020-02-02> patch level 2 -L3 programming layer <2020-02-14> -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2019/12/20 v1.4l Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo -File: size12.clo 2019/12/20 v1.4l Standard LaTeX file (size option) -) -\c@part=\count167 -\c@section=\count168 -\c@subsection=\count169 -\c@subsubsection=\count170 -\c@paragraph=\count171 -\c@subparagraph=\count172 -\c@figure=\count173 -\c@table=\count174 -\abovecaptionskip=\skip47 -\belowcaptionskip=\skip48 -\bibindent=\dimen134 -) -(/usr/share/texlive/texmf-dist/tex/latex/vntex/vietnam.sty -Package: vietnam 2009/07/12 v1.3 support for Vietnamese - -(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty -Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -Package: fontenc 2020/02/11 v2.0o Standard LaTeX package - -(/usr/share/texlive/texmf-dist/tex/latex/vntex/t5enc.def -File: t5enc.def 2006/11/21 v1.4 Vietnamese T5 encoding -Now handling font encoding T5 ... -... processing UTF-8 mapping file for font encoding T5 - -(/usr/share/texlive/texmf-dist/tex/latex/vntex/t5enc.dfu -File: t5enc.dfu 2006/08/19 v1.1 UTF8 support for Vietnamese - defining Unicode char U+00AB (decimal 171) - defining Unicode char U+00BB (decimal 187) - defining Unicode char U+00C0 (decimal 192) - defining Unicode char U+00C1 (decimal 193) - defining Unicode char U+00C2 (decimal 194) - defining Unicode char U+00C3 (decimal 195) - defining Unicode char U+00C8 (decimal 200) - defining Unicode char U+00C9 (decimal 201) - defining Unicode char U+00CA (decimal 202) - defining Unicode char U+00CC (decimal 204) - defining Unicode char U+00CD (decimal 205) - defining Unicode char U+00D2 (decimal 210) - defining Unicode char U+00D3 (decimal 211) - defining Unicode char U+00D4 (decimal 212) - defining Unicode char U+00D5 (decimal 213) - defining Unicode char U+00D9 (decimal 217) - defining Unicode char U+00DA (decimal 218) - defining Unicode char U+00DD (decimal 221) - defining Unicode char U+00E0 (decimal 224) - defining Unicode char U+00E1 (decimal 225) - defining Unicode char U+00E2 (decimal 226) - defining Unicode char U+00E3 (decimal 227) - defining Unicode char U+00E8 (decimal 232) - defining Unicode char U+00E9 (decimal 233) - defining Unicode char U+00EA (decimal 234) - defining Unicode char U+00EC (decimal 236) - defining Unicode char U+00ED (decimal 237) - defining Unicode char U+00F2 (decimal 242) - defining Unicode char U+00F3 (decimal 243) - defining Unicode char U+00F4 (decimal 244) - defining Unicode char U+00F5 (decimal 245) - defining Unicode char U+00F9 (decimal 249) - defining Unicode char U+00FA (decimal 250) - defining Unicode char U+00FD (decimal 253) - defining Unicode char U+0102 (decimal 258) - defining Unicode char U+0103 (decimal 259) - defining Unicode char U+0110 (decimal 272) - defining Unicode char U+0111 (decimal 273) - defining Unicode char U+0128 (decimal 296) - defining Unicode char U+0129 (decimal 297) - defining Unicode char U+0131 (decimal 305) - defining Unicode char U+0168 (decimal 360) - defining Unicode char U+0169 (decimal 361) - defining Unicode char U+01A0 (decimal 416) - defining Unicode char U+01A1 (decimal 417) - defining Unicode char U+01AF (decimal 431) - defining Unicode char U+01B0 (decimal 432) - defining Unicode char U+1EA0 (decimal 7840) - defining Unicode char U+1EA1 (decimal 7841) - defining Unicode char U+1EA2 (decimal 7842) - defining Unicode char U+1EA3 (decimal 7843) - defining Unicode char U+1EA4 (decimal 7844) - defining Unicode char U+1EA5 (decimal 7845) - defining Unicode char U+1EA6 (decimal 7846) - defining Unicode char U+1EA7 (decimal 7847) - defining Unicode char U+1EA8 (decimal 7848) - defining Unicode char U+1EA9 (decimal 7849) - defining Unicode char U+1EAA (decimal 7850) - defining Unicode char U+1EAB (decimal 7851) - defining Unicode char U+1EAC (decimal 7852) - defining Unicode char U+1EAD (decimal 7853) - defining Unicode char U+1EAE (decimal 7854) - defining Unicode char U+1EAF (decimal 7855) - defining Unicode char U+1EB0 (decimal 7856) - defining Unicode char U+1EB1 (decimal 7857) - defining Unicode char U+1EB2 (decimal 7858) - defining Unicode char U+1EB3 (decimal 7859) - defining Unicode char U+1EB4 (decimal 7860) - defining Unicode char U+1EB5 (decimal 7861) - defining Unicode char U+1EB6 (decimal 7862) - defining Unicode char U+1EB7 (decimal 7863) - defining Unicode char U+1EB8 (decimal 7864) - defining Unicode char U+1EB9 (decimal 7865) - defining Unicode char U+1EBA (decimal 7866) - defining Unicode char U+1EBB (decimal 7867) - defining Unicode char U+1EBC (decimal 7868) - defining Unicode char U+1EBD (decimal 7869) - defining Unicode char U+1EBE (decimal 7870) - defining Unicode char U+1EBF (decimal 7871) - defining Unicode char U+1EC0 (decimal 7872) - defining Unicode char U+1EC1 (decimal 7873) - defining Unicode char U+1EC2 (decimal 7874) - defining Unicode char U+1EC3 (decimal 7875) - defining Unicode char U+1EC4 (decimal 7876) - defining Unicode char U+1EC5 (decimal 7877) - defining Unicode char U+1EC6 (decimal 7878) - defining Unicode char U+1EC7 (decimal 7879) - defining Unicode char U+1EC8 (decimal 7880) - defining Unicode char U+1EC9 (decimal 7881) - defining Unicode char U+1ECA (decimal 7882) - defining Unicode char U+1ECB (decimal 7883) - defining Unicode char U+1ECC (decimal 7884) - defining Unicode char U+1ECD (decimal 7885) - defining Unicode char U+1ECE (decimal 7886) - defining Unicode char U+1ECF (decimal 7887) - defining Unicode char U+1ED0 (decimal 7888) - defining Unicode char U+1ED1 (decimal 7889) - defining Unicode char U+1ED2 (decimal 7890) - defining Unicode char U+1ED3 (decimal 7891) - defining Unicode char U+1ED4 (decimal 7892) - defining Unicode char U+1ED5 (decimal 7893) - defining Unicode char U+1ED6 (decimal 7894) - defining Unicode char U+1ED7 (decimal 7895) - defining Unicode char U+1ED8 (decimal 7896) - defining Unicode char U+1ED9 (decimal 7897) - defining Unicode char U+1EDA (decimal 7898) - defining Unicode char U+1EDB (decimal 7899) - defining Unicode char U+1EDC (decimal 7900) - defining Unicode char U+1EDD (decimal 7901) - defining Unicode char U+1EDE (decimal 7902) - defining Unicode char U+1EDF (decimal 7903) - defining Unicode char U+1EE0 (decimal 7904) - defining Unicode char U+1EE1 (decimal 7905) - defining Unicode char U+1EE2 (decimal 7906) - defining Unicode char U+1EE3 (decimal 7907) - defining Unicode char U+1EE4 (decimal 7908) - defining Unicode char U+1EE5 (decimal 7909) - defining Unicode char U+1EE6 (decimal 7910) - defining Unicode char U+1EE7 (decimal 7911) - defining Unicode char U+1EE8 (decimal 7912) - defining Unicode char U+1EE9 (decimal 7913) - defining Unicode char U+1EEA (decimal 7914) - defining Unicode char U+1EEB (decimal 7915) - defining Unicode char U+1EEC (decimal 7916) - defining Unicode char U+1EED (decimal 7917) - defining Unicode char U+1EEE (decimal 7918) - defining Unicode char U+1EEF (decimal 7919) - defining Unicode char U+1EF0 (decimal 7920) - defining Unicode char U+1EF1 (decimal 7921) - defining Unicode char U+1EF2 (decimal 7922) - defining Unicode char U+1EF3 (decimal 7923) - defining Unicode char U+1EF4 (decimal 7924) - defining Unicode char U+1EF5 (decimal 7925) - defining Unicode char U+1EF6 (decimal 7926) - defining Unicode char U+1EF7 (decimal 7927) - defining Unicode char U+1EF8 (decimal 7928) - defining Unicode char U+1EF9 (decimal 7929) - defining Unicode char U+200C (decimal 8204) - defining Unicode char U+2013 (decimal 8211) - defining Unicode char U+2014 (decimal 8212) - defining Unicode char U+2018 (decimal 8216) - defining Unicode char U+2019 (decimal 8217) - defining Unicode char U+201A (decimal 8218) - defining Unicode char U+201C (decimal 8220) - defining Unicode char U+201D (decimal 8221) - defining Unicode char U+201E (decimal 8222) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+2039 (decimal 8249) - defining Unicode char U+203A (decimal 8250) - defining Unicode char U+2423 (decimal 9251) -)) -LaTeX Font Info: Trying to load font information for T5+cmr on input line 11 -2. - -(/usr/share/texlive/texmf-dist/tex/latex/vntex/t5cmr.fd -File: t5cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions -)) -(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -Package: inputenc 2018/08/11 v1.3c Input encoding file -\inpenc@prehook=\toks14 -\inpenc@posthook=\toks15 -) -(/usr/share/texlive/texmf-dist/tex/latex/vntex/vncaps.tex -File: vncaps.tex 2006/06/07 v1.1 Captions in Vietnamese -)) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks16 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 105. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen135 -\Gin@req@width=\dimen136 -) -(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty -Package: array 2019/08/31 v2.4l Tabular extension package (FMi) -\col@sep=\dimen137 -\ar@mcellbox=\box45 -\extrarowheight=\dimen138 -\NC@list=\toks17 -\extratabsurround=\skip49 -\backup@length=\skip50 -\ar@cellbox=\box46 -) -\c@question=\count175 - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2020/01/20 v2.17e AMS math features -\@mathmargin=\skip51 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks18 -\ex@=\dimen139 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen140 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count176 -LaTeX Info: Redefining \frac on input line 227. -\uproot@=\count177 -\leftroot@=\count178 -LaTeX Info: Redefining \overline on input line 389. -\classnum@=\count179 -\DOTSCASE@=\count180 -LaTeX Info: Redefining \ldots on input line 486. -LaTeX Info: Redefining \dots on input line 489. -LaTeX Info: Redefining \cdots on input line 610. -\Mathstrutbox@=\box47 -\strutbox@=\box48 -\big@size=\dimen141 -LaTeX Font Info: Redeclaring font encoding OML on input line 733. -LaTeX Font Info: Redeclaring font encoding OMS on input line 734. -\macc@depth=\count181 -\c@MaxMatrixCols=\count182 -\dotsspace@=\muskip16 -\c@parentequation=\count183 -\dspbrk@lvl=\count184 -\tag@help=\toks19 -\row@=\count185 -\column@=\count186 -\maxfields@=\count187 -\andhelp@=\toks20 -\eqnshift@=\dimen142 -\alignsep@=\dimen143 -\tagshift@=\dimen144 -\tagwidth@=\dimen145 -\totwidth@=\dimen146 -\lineht@=\dimen147 -\@envbody=\toks21 -\multlinegap=\skip52 -\multlinetaggap=\skip53 -\mathdisplay@stack=\toks22 -LaTeX Info: Redefining \[ on input line 2859. -LaTeX Info: Redefining \] on input line 2860. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -Package: amssymb 2013/01/14 v3.01 AMS font symbols -) -(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def -File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode -\l__kernel_color_stack_int=\count188 -\l__pdf_internal_box=\box49 -) -(./test1.aux) -\openout1 = `test1.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for T5/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. - -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count189 -\scratchdimen=\dimen148 -\scratchbox=\box50 -\nofMPsegments=\count190 -\nofMParguments=\count191 -\everyMPshowfont=\toks23 -\MPscratchCnt=\count192 -\MPscratchDim=\dimen149 -\MPnumerator=\count193 -\makeMPintoPDFobject=\count194 -\everyMPtoPDFconversion=\toks24 -) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty -Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -85. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -LaTeX Font Info: Trying to load font information for U+msa on input line 20. - - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Trying to load font information for U+msb on input line 20. - - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) -Overfull \hbox (29.62482pt too wide) in paragraph at lines 20--30 -[][] - [] - - -Overfull \hbox (65.62482pt too wide) in paragraph at lines 35--45 -[][] - [] - - -Overfull \hbox (41.62482pt too wide) in paragraph at lines 50--60 -[][] - [] - -[1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./test1.aux) ) -Here is how much of TeX's memory you used: - 3067 strings out of 482671 - 37909 string characters out of 5955619 - 263325 words of memory out of 5000000 - 18210 multiletter control sequences out of 15000+600000 - 540738 words of font info for 46 fonts, out of 8000000 for 9000 - 264 hyphenation exceptions out of 8191 - 33i,8n,29p,222b,159s stack positions out of 5000i,500n,10000p,200000b,80000s - -Output written on test1.pdf (1 page, 15575 bytes). -PDF statistics: - 20 PDF objects out of 1000 (max. 8388607) - 13 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 1 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/test/test1.pdf b/test/test1.pdf deleted file mode 100755 index 4ce6af411bb64e27a22163f631a54d6a473db0ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15575 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Á_Z-8%CM2)uS~o{2KFy~++*lk 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 KTueb6_WuFzsNNU= diff --git a/test/test1.tex b/test/test1.tex deleted file mode 100755 index 8949fc9..0000000 --- a/test/test1.tex +++ /dev/null @@ -1,62 +0,0 @@ -\documentclass[12pt,a4paper,notitlepage]{article} -\usepackage[utf8]{vietnam} -\usepackage{graphicx} -\usepackage{array} -\linespread{1.5} -\newtheorem{question}{ Question } -\usepackage{amsmath} -\usepackage{amsfonts} -\usepackage{amssymb} -\begin{document} - \textbf { - \begin{center} - {\LARGE Simple exam } - \end{center} - } - - \begin{question} - Question 1 ? - - \begin{tabular}{ m{\linewidth}} - A. Answer 2 - \\ - B. Answer 4 - \\ - C. Answer 1 - \\ - D. Answer 3 - \\ - \end{tabular} - \end{question} - - \begin{question} - Question 3 ? - - \begin{tabular}{ m{0.25\linewidth} m{0.25\linewidth} m{0.25\linewidth} m{0.25\linewidth}} - A. Answer 3 - & - B. Answer 1 - & - C. Answer 4 - & - D. Answer 2 - \\ - \end{tabular} - \end{question} - - \begin{question} - Question 2 ? - - \begin{tabular}{ m{0.5\linewidth} m{0.5\linewidth} } - A. Answer 3 - & - B. Answer 4 - \\ - C. Answer 2 - & - D. Answer 1 - \\ - \end{tabular} - \end{question} - -\end{document} \ No newline at end of file From 919357243b260ffe40cef4d5bb7691497fd7ff06 Mon Sep 17 00:00:00 2001 From: binh Date: Tue, 12 Jan 2021 21:36:15 +0700 Subject: [PATCH 7/8] Add output folder --- out/answer1.aux | 1 + out/answer1.log | 146 ++++++++++++++++++++++++++++++++ out/answer1.pdf | Bin 0 -> 20629 bytes out/answer1.synctex.gz | Bin 0 -> 884 bytes out/exam1.aux | 1 + out/exam1.log | 178 +++++++++++++++++++++++++++++++++++++++ out/exam1.pdf | Bin 0 -> 39070 bytes out/exam1.synctex.gz | Bin 0 -> 1642 bytes out/solution1.aux | 1 + out/solution1.log | 176 ++++++++++++++++++++++++++++++++++++++ out/solution1.pdf | Bin 0 -> 40251 bytes out/solution1.synctex.gz | Bin 0 -> 1748 bytes 12 files changed, 503 insertions(+) create mode 100755 out/answer1.aux create mode 100755 out/answer1.log create mode 100755 out/answer1.pdf create mode 100755 out/answer1.synctex.gz create mode 100755 out/exam1.aux create mode 100755 out/exam1.log create mode 100755 out/exam1.pdf create mode 100755 out/exam1.synctex.gz create mode 100755 out/solution1.aux create mode 100755 out/solution1.log create mode 100755 out/solution1.pdf create mode 100755 out/solution1.synctex.gz diff --git a/out/answer1.aux b/out/answer1.aux new file mode 100755 index 0000000..f23e546 --- /dev/null +++ b/out/answer1.aux @@ -0,0 +1 @@ +\relax diff --git a/out/answer1.log b/out/answer1.log new file mode 100755 index 0000000..4ee24e2 --- /dev/null +++ b/out/answer1.log @@ -0,0 +1,146 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 12 JAN 2021 21:31 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**answer1.tex +(./answer1.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2019/12/20 v1.4l Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count167 +\c@section=\count168 +\c@subsection=\count169 +\c@subsubsection=\count170 +\c@paragraph=\count171 +\c@subparagraph=\count172 +\c@figure=\count173 +\c@table=\count174 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2018/08/11 v1.3c Input encoding file +\inpenc@prehook=\toks14 +\inpenc@posthook=\toks15 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +Package: multicol 2019/12/09 v1.8y multicolumn formatting (FMi) +\c@tracingmulticols=\count175 +\mult@box=\box45 +\multicol@leftmargin=\dimen135 +\c@unbalance=\count176 +\c@collectmore=\count177 +\doublecol@number=\count178 +\multicoltolerance=\count179 +\multicolpretolerance=\count180 +\full@width=\dimen136 +\page@free=\dimen137 +\premulticols=\dimen138 +\postmulticols=\dimen139 +\multicolsep=\skip49 +\multicolbaselineskip=\skip50 +\partial@page=\box46 +\last@line=\box47 +\maxbalancingoverflow=\dimen140 +\mult@rightbox=\box48 +\mult@grightbox=\box49 +\mult@gfirstbox=\box50 +\mult@firstbox=\box51 +\@tempa=\box52 +\@tempa=\box53 +\@tempa=\box54 +\@tempa=\box55 +\@tempa=\box56 +\@tempa=\box57 +\@tempa=\box58 +\@tempa=\box59 +\@tempa=\box60 +\@tempa=\box61 +\@tempa=\box62 +\@tempa=\box63 +\@tempa=\box64 +\@tempa=\box65 +\@tempa=\box66 +\@tempa=\box67 +\@tempa=\box68 +\@tempa=\box69 +\@tempa=\box70 +\@tempa=\box71 +\@tempa=\box72 +\@tempa=\box73 +\@tempa=\box74 +\@tempa=\box75 +\@tempa=\box76 +\@tempa=\box77 +\@tempa=\box78 +\@tempa=\box79 +\@tempa=\box80 +\@tempa=\box81 +\@tempa=\box82 +\@tempa=\box83 +\@tempa=\box84 +\@tempa=\box85 +\@tempa=\box86 +\@tempa=\box87 +\@tempa=\box88 +\c@minrows=\count181 +\c@columnbadness=\count182 +\c@finalcolumnbadness=\count183 +\last@try=\dimen141 +\multicolovershoot=\dimen142 +\multicolundershoot=\dimen143 +\mult@nat@firstbox=\box89 +\colbreak@box=\box90 +\mc@col@check@num=\count184 +) +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count185 +\l__pdf_internal_box=\box91 +) +No file answer1.aux. +\openout1 = `answer1.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +(/home/binh/Data/PycharmProjects/pytexexam/out/answer1.aux) ) +Here is how much of TeX's memory you used: + 508 strings out of 482671 + 8668 string characters out of 5955619 + 236667 words of memory out of 5000000 + 15750 multiletter control sequences out of 15000+600000 + 532646 words of font info for 25 fonts, out of 8000000 for 9000 + 264 hyphenation exceptions out of 8191 + 25i,4n,20p,153b,156s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on /home/binh/Data/PycharmProjects/pytexexam/out/answer1.pdf (1 +page, 20629 bytes). +PDF statistics: + 16 PDF objects out of 1000 (max. 8388607) + 10 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/out/answer1.pdf b/out/answer1.pdf new file mode 100755 index 0000000000000000000000000000000000000000..20a5291fd36dd1c19c32698f2e9e21e45e7ce404 GIT binary patch literal 20629 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 KT)`M<(*Fa}lu{l5 literal 0 HcmV?d00001 diff --git a/out/answer1.synctex.gz b/out/answer1.synctex.gz new file mode 100755 index 0000000000000000000000000000000000000000..691421001808a6e5af2a0a85476132d86da4dc12 GIT binary patch literal 884 zcmV-)1B?70iwFP!000001C^FbZ{tP`$M5qgl3NQn){yhowY~IEY=Azng^`0|j}z6h z6j*ZWwCHy)N7idK)?(uTjzIo~!}*g#>zDU(`>X$a_q#vUc~z#sek$M2O$ur9S{;4z zoR_c3k6Du?kMG;p>~wrQRe$w_bj1eI6G1 za=WgZ_b!6^<_Jwy6?Jkv7j%fKn1s;Z9HJ1<+4kVe-T3tIw%Z@8onP<#o_#tuAt0I9 z&)G|v@AGZev{mDrv){^`>c&3becJD9-=v)VF+ToKm2|QuW%tq<_AjsvtU#yI2#r>+ zq(HxO_Kuo06N|Efnl$+bMaL#C_d$=tR;4&wrv1q%tfS8*U z=cOe`Dj|#+ksv~Am!WPGd(UePVT*{jbbKQso}Lv*8S$V=d#e9nKeQ(!Ih;Wl`Op(2 zsB7ch@RQO{?OKt72-SC!wE~T{oShcj;TloAp`ZIO)E9IuqcEE#_q<3$LWVw0@uh?! z_d-GzxY8mHvsrR4C4@*(IoAsb#qQe)AsS`1jl*n~+=~er>Km?cDWS-{kdTqoCNd7Q zS#rk-UGM8~ktaK%MbLIK^loxOlVuJc7T|{~P0f296ytF28~iIX7gS7tIdzE`#%_yZ;jQt8D1H)^M&0T#U87=$&Sy3Pw9o_Os^{jX$#rf@9OO-e{0Uil>HAW K!K-_<3IG6$v$;+H literal 0 HcmV?d00001 diff --git a/out/exam1.aux b/out/exam1.aux new file mode 100755 index 0000000..f23e546 --- /dev/null +++ b/out/exam1.aux @@ -0,0 +1 @@ +\relax diff --git a/out/exam1.log b/out/exam1.log new file mode 100755 index 0000000..27ae801 --- /dev/null +++ b/out/exam1.log @@ -0,0 +1,178 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 12 JAN 2021 21:32 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**exam1.tex +(./exam1.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2019/12/20 v1.4l Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo +File: size12.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count167 +\c@section=\count168 +\c@subsection=\count169 +\c@subsubsection=\count170 +\c@paragraph=\count171 +\c@subparagraph=\count172 +\c@figure=\count173 +\c@table=\count174 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen135 +\Gin@req@width=\dimen136 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +Package: array 2019/08/31 v2.4l Tabular extension package (FMi) +\col@sep=\dimen137 +\ar@mcellbox=\box45 +\extrarowheight=\dimen138 +\NC@list=\toks15 +\extratabsurround=\skip49 +\backup@length=\skip50 +\ar@cellbox=\box46 +) +\c@question=\count175 + +(/usr/share/texlive/texmf-dist/tex/latex/cellspace/cellspace.sty +Package: cellspace 2019/03/11 v1.8.1 Spacing table cells (JN) + +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ) +\calc@Acount=\count176 +\calc@Bcount=\count177 +\calc@Adimen=\dimen139 +\calc@Bdimen=\dimen140 +\calc@Askip=\skip51 +\calc@Bskip=\skip52 +LaTeX Info: Redefining \setlength on input line 80. +LaTeX Info: Redefining \addtolength on input line 81. +\calc@Ccount=\count178 +\calc@Cskip=\skip53 +) +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks16 +\XKV@tempa@toks=\toks17 +) +\XKV@depth=\count179 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +\cellspacetoplimit=\dimen141 +\cellspacebottomlimit=\dimen142 +\cellspace@firstht=\dimen143 +\cellspace@lastdp=\dimen144 +) +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count180 +\l__pdf_internal_box=\box47 +) +(/home/binh/Data/PycharmProjects/pytexexam/out/exam1.aux) +\openout1 = `exam1.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. + +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count181 +\scratchdimen=\dimen145 +\scratchbox=\box48 +\nofMPsegments=\count182 +\nofMParguments=\count183 +\everyMPshowfont=\toks18 +\MPscratchCnt=\count184 +\MPscratchDim=\dimen146 +\MPnumerator=\count185 +\makeMPintoPDFobject=\count186 +\everyMPtoPDFconversion=\toks19 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <12> on input line 16. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 16. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 16. + +Overfull \hbox (65.62482pt too wide) in paragraph at lines 16--20 +[][] + [] + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +(/home/binh/Data/PycharmProjects/pytexexam/out/exam1.aux) ) +Here is how much of TeX's memory you used: + 1577 strings out of 482671 + 23066 string characters out of 5955619 + 252617 words of memory out of 5000000 + 16758 multiletter control sequences out of 15000+600000 + 536087 words of font info for 36 fonts, out of 8000000 for 9000 + 264 hyphenation exceptions out of 8191 + 30i,9n,35p,200b,212s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on /home/binh/Data/PycharmProjects/pytexexam/out/exam1.pdf (1 pa +ge, 39070 bytes). +PDF statistics: + 24 PDF objects out of 1000 (max. 8388607) + 16 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/out/exam1.pdf b/out/exam1.pdf new file mode 100755 index 0000000000000000000000000000000000000000..a6c709ecc78467276ce53ec3c7d0d535c9dc690a GIT binary patch literal 39070 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 WtB3QQmv{vDVcY;FCRsH(z&`*B4jv-_ literal 0 HcmV?d00001 diff --git a/out/exam1.synctex.gz b/out/exam1.synctex.gz new file mode 100755 index 0000000000000000000000000000000000000000..a14320f06aa38fb9508a52c2b89a45d2239e86a4 GIT binary patch literal 1642 zcmV-w29^0AiwFP!000001D#n*Z{s!)zUxPc%Pue}Ih%fpW!$(fI%A@ke&F8MwE^5M_)m}mRl0-|4bhf}eD#r$o* zP3JG!?rr{aT*ULw@5x(y+-7Cwya_n;56>hISj_z_#W7n24EAn@$7H$c=7K+JCU-y6 zYr32tUYBTl!pBBu>}H~3zu)92lVkiIED7Ldf+XE+@K;G(h3|?*^Z-h;=wFDQVaD}B8lkz>GwHZcT(AW<$}z3bBBirV${DMn z+Gyh#51>jRR` ziE|K^psi$zqJcTXDOzwugYKh+bOxO6qm|)cRA*k7z7brY|75UUt&!B~l8v@U)6%J` z^%MF>C@uAvS3O!%v;tI;?Sof?;P04)<*2jHJQ+0q$cTpFE&$n?&!rio=M)&$hXX?r zW(f`WxH?C9a1MT>b@pl7!vO~TqNVO5B-0u!8AG7{tN}8H!~hCQ=PDI5S_q2wOHgzT zxL^%T5xn8JGDq=78EGWJb0)aqHn6WtIkh@#3}N9~r$1vEv68{A9BEsW#X7!q2;q|vrV_|qWT=chYJ{E)Uo3x+w==e!o}jIl67 z*AR3`Ld^@~V}`N0Y(2u9G>N*#u! zLgPC?IebO+;W(ZEC4tyE(o0KRj!NRf4B!Q>%;{h{>&h+-##;m{24T@PEnmNV+@;=C zb?8O|Q?)m+DZZ%dVHESLm*FsDEt6sUh>#l=UwRlu+(qoq!}hBhrD!73tB~m^&xlNi z*gBnp!Yq#&muLVJA|@G4oS=PeWvKQH!^$iae2vF+ZnP%S##n3TE5g1V<)pcPja>3@ z#xzKZ=UDi7+4Z%`eW?h+mhvwygZZf8>$hKVED`GvWK6A`W2q}bM@~muCd2ltYUNyO zt7wv-_UB>yRkczyQR`L6bd+aAtwU^`TDh+cq$3%N3oTKvB(HMeP#ZL{a>*GAoH`8) zIxsY|a)m5{W=bp|Q1>*mVnu@W_y8U&Bx`79<&G(fuZB>q;Lr^XU%&l|V~JXaAfsw^ zQh~Zm;bSdTp+W4|)#|Lo>>)25W(Vxg!*-(9ihVMI?y2=Vkm)E-Pp!cLZ(vOqk`)Y7 zBOW~aQV>`aJ1&W21%R#20zEwDFRc5CWXo5zP(-q*7OYDxkszuV&kmeOR+JlP2yZbN zv7Th@0*@I2BOk09iva+Tbwo+~74Mdk?P|$kNCjwcjb!~mnj3SO$;Vs1)PSL zFRcD)%b2}7F9at5g$E-kuH6T4MbW(r0faOc0u7{`fog9AT62YNuLOGV_D+D{>q~(? zzPT0X patch level 2 +L3 programming layer <2020-02-14> +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2019/12/20 v1.4l Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo +File: size12.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count167 +\c@section=\count168 +\c@subsection=\count169 +\c@subsubsection=\count170 +\c@paragraph=\count171 +\c@subparagraph=\count172 +\c@figure=\count173 +\c@table=\count174 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen135 +\Gin@req@width=\dimen136 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +Package: array 2019/08/31 v2.4l Tabular extension package (FMi) +\col@sep=\dimen137 +\ar@mcellbox=\box45 +\extrarowheight=\dimen138 +\NC@list=\toks15 +\extratabsurround=\skip49 +\backup@length=\skip50 +\ar@cellbox=\box46 +) +\c@question=\count175 + +(/usr/share/texlive/texmf-dist/tex/latex/cellspace/cellspace.sty +Package: cellspace 2019/03/11 v1.8.1 Spacing table cells (JN) + +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ) +\calc@Acount=\count176 +\calc@Bcount=\count177 +\calc@Adimen=\dimen139 +\calc@Bdimen=\dimen140 +\calc@Askip=\skip51 +\calc@Bskip=\skip52 +LaTeX Info: Redefining \setlength on input line 80. +LaTeX Info: Redefining \addtolength on input line 81. +\calc@Ccount=\count178 +\calc@Cskip=\skip53 +) +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks16 +\XKV@tempa@toks=\toks17 +) +\XKV@depth=\count179 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +\cellspacetoplimit=\dimen141 +\cellspacebottomlimit=\dimen142 +\cellspace@firstht=\dimen143 +\cellspace@lastdp=\dimen144 +) +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count180 +\l__pdf_internal_box=\box47 +) +No file solution1.aux. +\openout1 = `solution1.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 10. +LaTeX Font Info: ... okay on input line 10. +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count181 +\scratchdimen=\dimen145 +\scratchbox=\box48 +\nofMPsegments=\count182 +\nofMParguments=\count183 +\everyMPshowfont=\toks18 +\MPscratchCnt=\count184 +\MPscratchDim=\dimen146 +\MPnumerator=\count185 +\makeMPintoPDFobject=\count186 +\everyMPtoPDFconversion=\toks19 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <12> on input line 16. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 16. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 16. + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +Overfull \vbox (423.74998pt too high) has occurred while \output is active [] + + +[2] [3] (/home/binh/Data/PycharmProjects/pytexexam/out/solution1.aux) ) +Here is how much of TeX's memory you used: + 1575 strings out of 482671 + 22988 string characters out of 5955619 + 252629 words of memory out of 5000000 + 16758 multiletter control sequences out of 15000+600000 + 536087 words of font info for 36 fonts, out of 8000000 for 9000 + 264 hyphenation exceptions out of 8191 + 30i,9n,35p,204b,212s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on /home/binh/Data/PycharmProjects/pytexexam/out/solution1.pdf ( +3 pages, 40251 bytes). +PDF statistics: + 30 PDF objects out of 1000 (max. 8388607) + 20 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/out/solution1.pdf b/out/solution1.pdf new file mode 100755 index 0000000000000000000000000000000000000000..05b8c2be900d689857978f0eb16d29670e4df894 GIT binary patch literal 40251 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 Date: Wed, 17 Mar 2021 15:24:33 +0700 Subject: [PATCH 8/8] Version 2.0.0 --- .gitignore | 6 +- .idea/pytexexam.iml | 1 + README.md | 88 +- docs/_build/.doctrees/environment.pickle | Bin 31745 -> 24146 bytes docs/_build/.doctrees/index.doctree | Bin 73128 -> 42642 bytes docs/_build/Makefile | 8 +- docs/_build/doctrees/environment.pickle | Bin 31750 -> 24145 bytes docs/_build/doctrees/index.doctree | Bin 73128 -> 42642 bytes docs/_build/footnotehyper-sphinx.sty | 161 ++- docs/_build/latex/Makefile | 8 +- docs/_build/latex/footnotehyper-sphinx.sty | 161 ++- docs/_build/latex/latexmkjarc | 4 +- docs/_build/latex/pytexexam.aux | 63 +- docs/_build/latex/pytexexam.fdb_latexmk | 149 +-- docs/_build/latex/pytexexam.fls | 99 +- docs/_build/latex/pytexexam.idx | 60 +- docs/_build/latex/pytexexam.ilg | 6 +- docs/_build/latex/pytexexam.ind | 86 +- docs/_build/latex/pytexexam.log | 1138 +++++++++----------- docs/_build/latex/pytexexam.out | 4 +- docs/_build/latex/pytexexam.pdf | Bin 106012 -> 101239 bytes docs/_build/latex/pytexexam.tex | 316 ++---- docs/_build/latex/pytexexam.toc | 8 +- docs/_build/latex/sphinx.sty | 390 ++++++- docs/_build/latex/sphinx.xdy | 6 +- docs/_build/latex/sphinxcyrillic.sty | 8 +- docs/_build/latex/sphinxhowto.cls | 15 +- docs/_build/latex/sphinxmanual.cls | 13 +- docs/_build/latex/sphinxmessages.sty | 2 +- docs/_build/latex/sphinxmulticell.sty | 4 +- docs/_build/latexmkjarc | 4 +- docs/_build/pytexexam.tex | 316 ++---- docs/_build/sphinx.sty | 390 ++++++- docs/_build/sphinx.xdy | 6 +- docs/_build/sphinxcyrillic.sty | 8 +- docs/_build/sphinxhowto.cls | 15 +- docs/_build/sphinxmanual.cls | 13 +- docs/_build/sphinxmessages.sty | 2 +- docs/_build/sphinxmulticell.sty | 4 +- out/exam1.log | 160 ++- out/exam1.pdf | Bin 39070 -> 39688 bytes out/exam1.synctex.gz | Bin 1642 -> 1916 bytes pytexexam/__init__.py | 2 +- pytexexam/builder.py | 19 +- pytexexam/jinja2env.py | 1 + pytexexam/latexexam.py | 6 + pytexexam/latexexamutil.py | 2 +- pytexexam/latexpaper.py | 3 + pytexexam/question.py | 4 + setup.py | 2 +- test/example.py | 17 +- 51 files changed, 2117 insertions(+), 1661 deletions(-) diff --git a/.gitignore b/.gitignore index 39155b9..89d9e7e 100755 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ # Project exclude paths -/venv/ \ No newline at end of file +/venv/ +/build/ +/dist/ +/out/ +/docs/ diff --git a/.idea/pytexexam.iml b/.idea/pytexexam.iml index df7a4d4..df9a828 100755 --- a/.idea/pytexexam.iml +++ b/.idea/pytexexam.iml @@ -4,6 +4,7 @@ + diff --git a/README.md b/README.md index 0792851..0b2cd34 100755 --- a/README.md +++ b/README.md @@ -9,64 +9,36 @@ pip install pytexexam ## How to use ```python -from pytexexam import Question, Exam, LatexExam, latexexamutil - -# Create questions, answers and solution. -question = Question("Question 1 ?") -question.answer_a("Answer 1", True) -question.answer_b("Answer 2") -question.answer_c("Answer 3") -question.answer_d("Answer 4") -question.shuffle_answer() -question.solution(""" -This is the detailed answer of the first question. -""") - -# Another way to enter answer options. -question2 = Question("Question 2 ?") -question2.answers(true_answer="A", answer_dict={ - "A": "Answer 1", - "B": "Answer 2", - "C": "Answer 3", - "D": "Answer 4" -}) -question2.solution(""" -This is the detailed answer of the second question. -""") -question2.set_answer_column(2) -question2.shuffle_answer() - -# One more question. -question3 = Question("Question 3 ?") -question3.answer_a("Answer 1", True) -question3.answer_b("Answer 2") -question3.answer_c("Answer 3") -question3.answer_d("Answer 4") -question3.set_answer_column(4) -question3.shuffle_answer() - -# Create a exam from existing questions. -exam = Exam([question, question2, question3]) - -# Shuffle the questions. -exam.shuffle_question() - -# Create a LatexExam object to export a question as a tex or pdf file (with latex pre-installed) -latex_exam = LatexExam("Simple exam", exam) -# Add AMS math packages, if needed. -latex_exam.add_user_preamble(latexexamutil.ams_math_package()) - -# Export exam. -latex_exam.export_tex_exam("test1.tex") -latex_exam.export_pdf_exam("test1.pdf") - -# Export answer keys -latex_exam.export_tex_answer("answer1.tex") -latex_exam.export_pdf_answer("answer1.pdf") - -# Export solutions. -latex_exam.export_tex_solution("solution1.pdf") -latex_exam.export_pdf_solution("solution1.pdf") +import pytexexam.latexexamutil as util +from pytexexam import LatexExamBuilder, ExamExportType + +# Create exam builder +builder = LatexExamBuilder() +# You can add preamble here +builder.preamble = util.ams_math_package() +# Exam header +builder.header = "This is a simple header" +# Exam footer +builder.footer = "This is a simple footer" +# You can export exam in tex file or pdf file (need Latex installed) +builder.export_type = ExamExportType.PDF +# Add question +builder.add_question( + question="This is a simple question", + # Answers: This package auto add A, B, C, D ... in answers + answer=["Answer 1", "Answer 2", "Answer 3", "Answer 4"], + # True answer key + true_answer="A", + # present answer in multiple column + answer_column=4, + # Solution of this question + solution="This is solution for this question", +) + +# Creste exam, answer and solution! +builder.create_exam("exam1") +builder.create_answer("answer1") +builder.create_solution("solution1") ``` ## All package API. diff --git a/docs/_build/.doctrees/environment.pickle b/docs/_build/.doctrees/environment.pickle index f38d9522cc3a64014fdf435b202eeaa0aab73b29..8f8b5a3fbed6ffd321f56df3a1717e92f2771fb9 100755 GIT binary patch literal 24146 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 AU;qFB literal 31745 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

tp$7D*_+2o$iy|%Wt>aw`{ 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 diff --git a/docs/_build/.doctrees/index.doctree b/docs/_build/.doctrees/index.doctree index 1a8c90529f479709edc865c2c8d68f3add5a7a00..1a75e786a7eb3b73aec1e9dbaec11edb72d55416 100755 GIT binary patch literal 42642 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 literal 73128 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 U7f{?jRmHI=AGTqS=`76sKafwD=>Px# diff --git a/docs/_build/Makefile b/docs/_build/Makefile index c561680..e4653f2 100755 --- a/docs/_build/Makefile +++ b/docs/_build/Makefile @@ -5,14 +5,13 @@ ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) ALLXDV = ALLPS = $(addsuffix .ps,$(ALLDOCS)) -ALLIMGS = $(wildcard *.png *.gif *.jpg *.jpeg) # Prefix for archive names ARCHIVEPREFIX = # Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) -export LATEXOPTS = +export LATEXOPTS ?= # Additional latexmk options -LATEXMKOPTS = +LATEXMKOPTS ?= # format: pdf or dvi (used only by archive targets) FMT = pdf @@ -20,9 +19,6 @@ LATEX = latexmk -dvi PDFLATEX = latexmk -pdf -dvi- -ps- -%.png %.gif %.jpg %.jpeg: FORCE_MAKE - extractbb '$@' - %.dvi: %.tex FORCE_MAKE $(LATEX) $(LATEXMKOPTS) '$<' diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 85e4d4be4a04ddffa9cace82fd9be4061f5b1983..0eb7a9119b48531e166ba37d29f0410f0b3fe793 100755 GIT binary patch literal 24145 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 CV_C}p literal 31750 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 Cw{Uy_ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree index 1a8c90529f479709edc865c2c8d68f3add5a7a00..1a75e786a7eb3b73aec1e9dbaec11edb72d55416 100755 GIT binary patch literal 42642 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 literal 73128 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 U7f{?jRmHI=AGTqS=`76sKafwD=>Px# diff --git a/docs/_build/footnotehyper-sphinx.sty b/docs/_build/footnotehyper-sphinx.sty index b6692cf..3bba385 100755 --- a/docs/_build/footnotehyper-sphinx.sty +++ b/docs/_build/footnotehyper-sphinx.sty @@ -1,9 +1,9 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{footnotehyper-sphinx}% - [2017/10/27 v1.7 hyperref aware footnote.sty for sphinx (JFB)] + [2021/02/04 v1.1d hyperref aware footnote.sty for sphinx (JFB)] %% %% Package: footnotehyper-sphinx -%% Version: based on footnotehyper.sty 2017/03/07 v1.0 +%% Version: based on footnotehyper.sty 2021/02/04 v1.1d %% as available at https://www.ctan.org/pkg/footnotehyper %% License: the one applying to Sphinx %% @@ -16,10 +16,12 @@ %% 3. use of \sphinxunactivateextrasandspace from sphinx.sty, %% 4. macro definition \sphinxfootnotemark, %% 5. macro definition \sphinxlongtablepatch -%% 6. replaced an \undefined by \@undefined +%% 6. replaced some \undefined by \@undefined +\newif\iffootnotehyperparse\footnotehyperparsetrue \DeclareOption*{\PackageWarning{footnotehyper-sphinx}{Option `\CurrentOption' is unknown}}% \ProcessOptions\relax \newbox\FNH@notes +\newtoks\FNH@toks % 1.1c \newdimen\FNH@width \let\FNH@colwidth\columnwidth \newif\ifFNH@savingnotes @@ -27,6 +29,7 @@ \let\FNH@latex@footnote \footnote \let\FNH@latex@footnotetext\footnotetext \let\FNH@H@@footnotetext \@footnotetext + \let\FNH@H@@mpfootnotetext \@mpfootnotetext \newenvironment{savenotes} {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% \let\spewnotes \FNH@spewnotes @@ -37,6 +40,7 @@ \@ifpackageloaded{hyperref} {\ifHy@hyperfootnotes \let\FNH@H@@footnotetext\H@@footnotetext + \let\FNH@H@@mpfootnotetext\H@@mpfootnotetext \else \let\FNH@hyper@fntext\FNH@nohyp@fntext \fi}% @@ -111,14 +115,33 @@ \fi }% \def\FNH@spewnotes {% - \endgroup + \if@endpe\ifx\par\@@par\FNH@toks{}\else + \FNH@toks\expandafter{\expandafter + \def\expandafter\par\expandafter{\par}\@endpetrue}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\def\expandafter\@par\expandafter{\@par}}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\everypar\expandafter{\the\everypar}}\fi + \else\FNH@toks{}\fi + \expandafter + \endgroup\the\FNH@toks \ifFNH@savingnotes\else \ifvoid\FNH@notes\else \begingroup \let\@makefntext\@empty \let\@finalstrut\@gobble \let\rule\@gobbletwo - \FNH@H@@footnotetext{\unvbox\FNH@notes}% + \ifx\@footnotetext\@mpfootnotetext + \expandafter\FNH@H@@mpfootnotetext + \else + \expandafter\FNH@H@@footnotetext + \fi{\unvbox\FNH@notes}% \endgroup \fi \fi @@ -196,19 +219,68 @@ \FNH@endfntext@fntext {\unvbox\z@}% \endgroup }% -\AtBeginDocument{% - \let\FNH@@makefntext\@makefntext - \ifx\@makefntextFB\@undefined - \expandafter\@gobble\else\expandafter\@firstofone\fi - {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else - \let\FNH@@makefntext\@makefntextORI\fi}% - \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}% - \FNH@@@1.2!3?4,\FNH@@@\relax +\let\FNH@prefntext\@empty +\let\FNH@postfntext\@empty +\AtBeginDocument{\iffootnotehyperparse\expandafter\FNH@check\fi}% +\def\FNH@safeif#1{% + \iftrue\csname if#1\endcsname\csname fi\endcsname\expandafter\@firstoftwo + \else\csname fi\endcsname\expandafter\@secondoftwo + \fi +}% +\def\FNH@check{% + \ifx\@makefntextFB\@undefined\expandafter\FNH@check@ + \else\expandafter\FNH@frenchb@ + \fi +}% +\def\FNH@frenchb@{% + \def\FNH@prefntext{% + \localleftbox{}% + \let\FBeverypar@save\FBeverypar@quote + \let\FBeverypar@quote\relax + \FNH@safeif{FB@koma}% + {\FNH@safeif{FBFrenchFootnotes}% + {\ifx\footnote\thanks + \let\@@makefnmark\@@makefnmarkTH + \@makefntextTH{} % space as in french.ldf + \else + \let\@@makefnmark\@@makefnmarkFB + \@makefntextFB{} % space as in french.ldf + \fi + }{\let\@@makefnmark\@@makefnmarkORI + \@makefntextORI{}% no space as in french.ldf + }% + }% + {\FNH@safeif{FBFrenchFootnotes}% + {\@makefntextFB{}}% + {\@makefntextORI{}}% + }% + }% + \def\FNH@postfntext{% + \let\FBeverypar@quote\FBeverypar@save + \localleftbox{\FBeveryline@quote}% + }% +}% +\def\FNH@check@{% + \expandafter\FNH@check@a\@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax }% \long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% - \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi - \FNH@bad@makefntext@alert - {\def\FNH@prefntext{#1}\def\FNH@postfntext{#2}\FNH@check@b}% + \ifx\relax#3\expandafter\FNH@checkagain@ + \else + \def\FNH@prefntext{#1}\def\FNH@postfntext{#2}% + \expandafter\FNH@check@b + \fi +}% +\def\FNH@checkagain@{% + \expandafter\FNH@checkagain@a + \detokenize\expandafter{\@makefntext{1.2!3?4,}}\relax\FNH@@@ +}% +\edef\FNH@temp{\noexpand\FNH@checkagain@a ##1\string{1.2!3?4,\string}}% +\expandafter\def\FNH@temp#2#3\FNH@@@{% + \ifx\relax#2% + \def\FNH@prefntext{\@makefntext{}}% + \else\FNH@bad@makefntext@alert + \fi }% \def\FNH@check@b #1\relax{% \expandafter\expandafter\expandafter\FNH@check@c @@ -216,7 +288,7 @@ \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax }% \def\FNH@check@c #11.2!3?4,#2#3\relax{% - \ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@makefntext@alert + \ifx\FNH@check@c#2\else\FNH@bad@makefntext@alert\fi }% % slight reformulation for Sphinx \def\FNH@bad@makefntext@alert{% @@ -250,12 +322,61 @@ \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi }% }% -% end of footnotehyper 2017/02/16 v0.99 % some extras for Sphinx : % \sphinxfootnotemark: usable in section titles and silently removed from TOCs. \def\sphinxfootnotemark [#1]% - {\ifx\thepage\relax\else\protect\spx@opt@BeforeFootnote - \protect\footnotemark[#1]\fi}% + {\ifx\thepage\relax\else\sphinxfootref{#1}\fi}% +% \sphinxfootref: +% - \spx@opt@BeforeFootnote is from BeforeFootnote sphinxsetup option +% - \ref: +% the latex.py writer inserts a \phantomsection\label{.} +% whenever +% - the footnote was explicitly numbered in sources, +% - or it was in restrained context and is rendered using footnotetext +% +% These are the two types of footnotes that \sphinxfootnotemark must +% handle. But for explicitly numbered footnotes the same number +% can be found in document. So a secondary part in is updated +% at each novel such footnote to know what is the target from then on +% for \sphinxfootnotemark and already encountered [1], or [2],... +% +% LaTeX package varioref is not supported by hyperref (from its doc: "There +% are too many problems with varioref. Nobody has time to sort them out. +% Therefore this package is now unsupported.") So we will simply use our own +% macros to access the page number of footnote text and decide whether to print +% it. \pagename is internationalized by latex-babel. +\def\spx@thefnmark#1#2{% + % #1=label for reference, #2=page where footnote was printed + \ifx\spx@tempa\spx@tempb + % same page + #1% + \else + \sphinxthefootnotemark{#1}{#2}% + \fi +}% +\def\sphinxfootref@get #1#2#3#4#5\relax{% + \def\sphinxfootref@label{#1}% + \def\sphinxfootref@page {#2}% + \def\sphinxfootref@Href {#4}% +}% +\protected\def\sphinxfootref#1{% #1 always explicit number in Sphinx usage + \spx@opt@BeforeFootnote + \ltx@ifundefined{r@\thesphinxscope.#1}% + {\gdef\@thefnmark{?}\H@@footnotemark}% + {\expandafter\expandafter\expandafter\sphinxfootref@get + \csname r@\thesphinxscope.#1\endcsname\relax + \edef\spx@tempa{\thepage}\edef\spx@tempb{\sphinxfootref@page}% + \protected@xdef\@thefnmark{\spx@thefnmark{\sphinxfootref@label}{\sphinxfootref@page}}% + \let\spx@@makefnmark\@makefnmark + \def\@makefnmark{% + \hyper@linkstart{link}{\sphinxfootref@Href}% + \spx@@makefnmark + \hyper@linkend + }% + \H@@footnotemark + \let\@makefnmark\spx@@makefnmark + }% +}% \AtBeginDocument{% % let hyperref less complain \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% diff --git a/docs/_build/latex/Makefile b/docs/_build/latex/Makefile index c561680..e4653f2 100755 --- a/docs/_build/latex/Makefile +++ b/docs/_build/latex/Makefile @@ -5,14 +5,13 @@ ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) ALLXDV = ALLPS = $(addsuffix .ps,$(ALLDOCS)) -ALLIMGS = $(wildcard *.png *.gif *.jpg *.jpeg) # Prefix for archive names ARCHIVEPREFIX = # Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) -export LATEXOPTS = +export LATEXOPTS ?= # Additional latexmk options -LATEXMKOPTS = +LATEXMKOPTS ?= # format: pdf or dvi (used only by archive targets) FMT = pdf @@ -20,9 +19,6 @@ LATEX = latexmk -dvi PDFLATEX = latexmk -pdf -dvi- -ps- -%.png %.gif %.jpg %.jpeg: FORCE_MAKE - extractbb '$@' - %.dvi: %.tex FORCE_MAKE $(LATEX) $(LATEXMKOPTS) '$<' diff --git a/docs/_build/latex/footnotehyper-sphinx.sty b/docs/_build/latex/footnotehyper-sphinx.sty index b6692cf..3bba385 100755 --- a/docs/_build/latex/footnotehyper-sphinx.sty +++ b/docs/_build/latex/footnotehyper-sphinx.sty @@ -1,9 +1,9 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{footnotehyper-sphinx}% - [2017/10/27 v1.7 hyperref aware footnote.sty for sphinx (JFB)] + [2021/02/04 v1.1d hyperref aware footnote.sty for sphinx (JFB)] %% %% Package: footnotehyper-sphinx -%% Version: based on footnotehyper.sty 2017/03/07 v1.0 +%% Version: based on footnotehyper.sty 2021/02/04 v1.1d %% as available at https://www.ctan.org/pkg/footnotehyper %% License: the one applying to Sphinx %% @@ -16,10 +16,12 @@ %% 3. use of \sphinxunactivateextrasandspace from sphinx.sty, %% 4. macro definition \sphinxfootnotemark, %% 5. macro definition \sphinxlongtablepatch -%% 6. replaced an \undefined by \@undefined +%% 6. replaced some \undefined by \@undefined +\newif\iffootnotehyperparse\footnotehyperparsetrue \DeclareOption*{\PackageWarning{footnotehyper-sphinx}{Option `\CurrentOption' is unknown}}% \ProcessOptions\relax \newbox\FNH@notes +\newtoks\FNH@toks % 1.1c \newdimen\FNH@width \let\FNH@colwidth\columnwidth \newif\ifFNH@savingnotes @@ -27,6 +29,7 @@ \let\FNH@latex@footnote \footnote \let\FNH@latex@footnotetext\footnotetext \let\FNH@H@@footnotetext \@footnotetext + \let\FNH@H@@mpfootnotetext \@mpfootnotetext \newenvironment{savenotes} {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% \let\spewnotes \FNH@spewnotes @@ -37,6 +40,7 @@ \@ifpackageloaded{hyperref} {\ifHy@hyperfootnotes \let\FNH@H@@footnotetext\H@@footnotetext + \let\FNH@H@@mpfootnotetext\H@@mpfootnotetext \else \let\FNH@hyper@fntext\FNH@nohyp@fntext \fi}% @@ -111,14 +115,33 @@ \fi }% \def\FNH@spewnotes {% - \endgroup + \if@endpe\ifx\par\@@par\FNH@toks{}\else + \FNH@toks\expandafter{\expandafter + \def\expandafter\par\expandafter{\par}\@endpetrue}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\def\expandafter\@par\expandafter{\@par}}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\everypar\expandafter{\the\everypar}}\fi + \else\FNH@toks{}\fi + \expandafter + \endgroup\the\FNH@toks \ifFNH@savingnotes\else \ifvoid\FNH@notes\else \begingroup \let\@makefntext\@empty \let\@finalstrut\@gobble \let\rule\@gobbletwo - \FNH@H@@footnotetext{\unvbox\FNH@notes}% + \ifx\@footnotetext\@mpfootnotetext + \expandafter\FNH@H@@mpfootnotetext + \else + \expandafter\FNH@H@@footnotetext + \fi{\unvbox\FNH@notes}% \endgroup \fi \fi @@ -196,19 +219,68 @@ \FNH@endfntext@fntext {\unvbox\z@}% \endgroup }% -\AtBeginDocument{% - \let\FNH@@makefntext\@makefntext - \ifx\@makefntextFB\@undefined - \expandafter\@gobble\else\expandafter\@firstofone\fi - {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else - \let\FNH@@makefntext\@makefntextORI\fi}% - \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}% - \FNH@@@1.2!3?4,\FNH@@@\relax +\let\FNH@prefntext\@empty +\let\FNH@postfntext\@empty +\AtBeginDocument{\iffootnotehyperparse\expandafter\FNH@check\fi}% +\def\FNH@safeif#1{% + \iftrue\csname if#1\endcsname\csname fi\endcsname\expandafter\@firstoftwo + \else\csname fi\endcsname\expandafter\@secondoftwo + \fi +}% +\def\FNH@check{% + \ifx\@makefntextFB\@undefined\expandafter\FNH@check@ + \else\expandafter\FNH@frenchb@ + \fi +}% +\def\FNH@frenchb@{% + \def\FNH@prefntext{% + \localleftbox{}% + \let\FBeverypar@save\FBeverypar@quote + \let\FBeverypar@quote\relax + \FNH@safeif{FB@koma}% + {\FNH@safeif{FBFrenchFootnotes}% + {\ifx\footnote\thanks + \let\@@makefnmark\@@makefnmarkTH + \@makefntextTH{} % space as in french.ldf + \else + \let\@@makefnmark\@@makefnmarkFB + \@makefntextFB{} % space as in french.ldf + \fi + }{\let\@@makefnmark\@@makefnmarkORI + \@makefntextORI{}% no space as in french.ldf + }% + }% + {\FNH@safeif{FBFrenchFootnotes}% + {\@makefntextFB{}}% + {\@makefntextORI{}}% + }% + }% + \def\FNH@postfntext{% + \let\FBeverypar@quote\FBeverypar@save + \localleftbox{\FBeveryline@quote}% + }% +}% +\def\FNH@check@{% + \expandafter\FNH@check@a\@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax }% \long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% - \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi - \FNH@bad@makefntext@alert - {\def\FNH@prefntext{#1}\def\FNH@postfntext{#2}\FNH@check@b}% + \ifx\relax#3\expandafter\FNH@checkagain@ + \else + \def\FNH@prefntext{#1}\def\FNH@postfntext{#2}% + \expandafter\FNH@check@b + \fi +}% +\def\FNH@checkagain@{% + \expandafter\FNH@checkagain@a + \detokenize\expandafter{\@makefntext{1.2!3?4,}}\relax\FNH@@@ +}% +\edef\FNH@temp{\noexpand\FNH@checkagain@a ##1\string{1.2!3?4,\string}}% +\expandafter\def\FNH@temp#2#3\FNH@@@{% + \ifx\relax#2% + \def\FNH@prefntext{\@makefntext{}}% + \else\FNH@bad@makefntext@alert + \fi }% \def\FNH@check@b #1\relax{% \expandafter\expandafter\expandafter\FNH@check@c @@ -216,7 +288,7 @@ \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax }% \def\FNH@check@c #11.2!3?4,#2#3\relax{% - \ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@makefntext@alert + \ifx\FNH@check@c#2\else\FNH@bad@makefntext@alert\fi }% % slight reformulation for Sphinx \def\FNH@bad@makefntext@alert{% @@ -250,12 +322,61 @@ \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi }% }% -% end of footnotehyper 2017/02/16 v0.99 % some extras for Sphinx : % \sphinxfootnotemark: usable in section titles and silently removed from TOCs. \def\sphinxfootnotemark [#1]% - {\ifx\thepage\relax\else\protect\spx@opt@BeforeFootnote - \protect\footnotemark[#1]\fi}% + {\ifx\thepage\relax\else\sphinxfootref{#1}\fi}% +% \sphinxfootref: +% - \spx@opt@BeforeFootnote is from BeforeFootnote sphinxsetup option +% - \ref: +% the latex.py writer inserts a \phantomsection\label{.} +% whenever +% - the footnote was explicitly numbered in sources, +% - or it was in restrained context and is rendered using footnotetext +% +% These are the two types of footnotes that \sphinxfootnotemark must +% handle. But for explicitly numbered footnotes the same number +% can be found in document. So a secondary part in is updated +% at each novel such footnote to know what is the target from then on +% for \sphinxfootnotemark and already encountered [1], or [2],... +% +% LaTeX package varioref is not supported by hyperref (from its doc: "There +% are too many problems with varioref. Nobody has time to sort them out. +% Therefore this package is now unsupported.") So we will simply use our own +% macros to access the page number of footnote text and decide whether to print +% it. \pagename is internationalized by latex-babel. +\def\spx@thefnmark#1#2{% + % #1=label for reference, #2=page where footnote was printed + \ifx\spx@tempa\spx@tempb + % same page + #1% + \else + \sphinxthefootnotemark{#1}{#2}% + \fi +}% +\def\sphinxfootref@get #1#2#3#4#5\relax{% + \def\sphinxfootref@label{#1}% + \def\sphinxfootref@page {#2}% + \def\sphinxfootref@Href {#4}% +}% +\protected\def\sphinxfootref#1{% #1 always explicit number in Sphinx usage + \spx@opt@BeforeFootnote + \ltx@ifundefined{r@\thesphinxscope.#1}% + {\gdef\@thefnmark{?}\H@@footnotemark}% + {\expandafter\expandafter\expandafter\sphinxfootref@get + \csname r@\thesphinxscope.#1\endcsname\relax + \edef\spx@tempa{\thepage}\edef\spx@tempb{\sphinxfootref@page}% + \protected@xdef\@thefnmark{\spx@thefnmark{\sphinxfootref@label}{\sphinxfootref@page}}% + \let\spx@@makefnmark\@makefnmark + \def\@makefnmark{% + \hyper@linkstart{link}{\sphinxfootref@Href}% + \spx@@makefnmark + \hyper@linkend + }% + \H@@footnotemark + \let\@makefnmark\spx@@makefnmark + }% +}% \AtBeginDocument{% % let hyperref less complain \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% diff --git a/docs/_build/latex/latexmkjarc b/docs/_build/latex/latexmkjarc index 5b315d6..6e36b19 100755 --- a/docs/_build/latex/latexmkjarc +++ b/docs/_build/latex/latexmkjarc @@ -1,4 +1,4 @@ -$latex = 'platex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; $dvipdf = 'dvipdfmx %O -o %D %S'; $makeindex = 'internal mendex %S %B %D'; sub mendex { @@ -19,4 +19,4 @@ sub mendex { add_cus_dep( "glo", "gls", 0, "makeglo" ); sub makeglo { return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); -} +} \ No newline at end of file diff --git a/docs/_build/latex/pytexexam.aux b/docs/_build/latex/pytexexam.aux index 74710b9..2b2dcc9 100755 --- a/docs/_build/latex/pytexexam.aux +++ b/docs/_build/latex/pytexexam.aux @@ -1,5 +1,6 @@ \relax \providecommand\hyper@newdestlabel[2]{} +\@nameuse{bbl@beforestart} \providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} \HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined \global\let\oldcontentsline\contentsline @@ -25,42 +26,30 @@ \newlabel{index:pytexexam.answer.Answer}{{1}{1}{Pytexexam main class}{section*.3}{}} \newlabel{index:module-pytexexam.question}{{1}{1}{Pytexexam main class}{section*.4}{}} \newlabel{index:pytexexam.question.Question}{{1}{1}{Pytexexam main class}{section*.5}{}} -\newlabel{index:pytexexam.question.Question.answer_a}{{1}{1}{Pytexexam main class}{section*.6}{}} -\newlabel{index:pytexexam.question.Question.answer_b}{{1}{1}{Pytexexam main class}{section*.7}{}} -\newlabel{index:pytexexam.question.Question.answer_c}{{1}{1}{Pytexexam main class}{section*.8}{}} -\newlabel{index:pytexexam.question.Question.answer_d}{{1}{1}{Pytexexam main class}{section*.9}{}} -\newlabel{index:pytexexam.question.Question.answers}{{1}{1}{Pytexexam main class}{section*.10}{}} -\newlabel{index:pytexexam.question.Question.get_answer}{{1}{1}{Pytexexam main class}{section*.11}{}} -\newlabel{index:pytexexam.question.Question.get_answer_column}{{1}{2}{Pytexexam main class}{section*.12}{}} -\newlabel{index:pytexexam.question.Question.get_true_answer}{{1}{2}{Pytexexam main class}{section*.13}{}} -\newlabel{index:pytexexam.question.Question.question}{{1}{2}{Pytexexam main class}{section*.14}{}} -\newlabel{index:pytexexam.question.Question.set_answer_column}{{1}{2}{Pytexexam main class}{section*.15}{}} -\newlabel{index:pytexexam.question.Question.shuffle_answer}{{1}{2}{Pytexexam main class}{section*.16}{}} -\newlabel{index:pytexexam.question.Question.solution}{{1}{2}{Pytexexam main class}{section*.17}{}} -\newlabel{index:module-pytexexam.exam}{{1}{2}{Pytexexam main class}{section*.18}{}} -\newlabel{index:pytexexam.exam.Exam}{{1}{2}{Pytexexam main class}{section*.19}{}} -\newlabel{index:pytexexam.exam.Exam.question_list}{{1}{2}{Pytexexam main class}{section*.20}{}} -\newlabel{index:pytexexam.exam.Exam.shuffle_question}{{1}{2}{Pytexexam main class}{section*.21}{}} -\newlabel{index:module-pytexexam.latexexam}{{1}{2}{Pytexexam main class}{section*.22}{}} -\newlabel{index:pytexexam.latexexam.LatexExam}{{1}{2}{Pytexexam main class}{section*.23}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.add_user_preamble}{{1}{2}{Pytexexam main class}{section*.24}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.exam_content}{{1}{2}{Pytexexam main class}{section*.25}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.exam_header}{{1}{2}{Pytexexam main class}{section*.26}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.exam_title}{{1}{2}{Pytexexam main class}{section*.27}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.export_pdf_answer}{{1}{2}{Pytexexam main class}{section*.28}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.export_pdf_exam}{{1}{2}{Pytexexam main class}{section*.29}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.export_pdf_solution}{{1}{3}{Pytexexam main class}{section*.30}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.export_tex_answer}{{1}{3}{Pytexexam main class}{section*.31}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.export_tex_exam}{{1}{3}{Pytexexam main class}{section*.32}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.export_tex_solution}{{1}{3}{Pytexexam main class}{section*.33}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.question_theorem}{{1}{3}{Pytexexam main class}{section*.34}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.solution_theorem}{{1}{3}{Pytexexam main class}{section*.35}{}} -\newlabel{index:pytexexam.latexexam.LatexExam.user_preamble}{{1}{3}{Pytexexam main class}{section*.36}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {2}Pytexexam util class}{5}{chapter.2}\protected@file@percent } +\newlabel{index:pytexexam.question.Question.answer_column}{{1}{1}{Pytexexam main class}{section*.6}{}} +\newlabel{index:pytexexam.question.Question.answers}{{1}{1}{Pytexexam main class}{section*.7}{}} +\newlabel{index:pytexexam.question.Question.get_true_answer_key}{{1}{1}{Pytexexam main class}{section*.8}{}} +\newlabel{index:pytexexam.question.Question.print_question_latex}{{1}{1}{Pytexexam main class}{section*.9}{}} +\newlabel{index:pytexexam.question.Question.print_solution_latex}{{1}{1}{Pytexexam main class}{section*.10}{}} +\newlabel{index:pytexexam.question.Question.question}{{1}{1}{Pytexexam main class}{section*.11}{}} +\newlabel{index:pytexexam.question.Question.shuffle_answer}{{1}{1}{Pytexexam main class}{section*.12}{}} +\newlabel{index:pytexexam.question.Question.solution}{{1}{1}{Pytexexam main class}{section*.13}{}} +\newlabel{index:module-pytexexam.exam}{{1}{1}{Pytexexam main class}{section*.14}{}} +\newlabel{index:pytexexam.exam.Exam}{{1}{1}{Pytexexam main class}{section*.15}{}} +\newlabel{index:pytexexam.exam.Exam.question_list}{{1}{1}{Pytexexam main class}{section*.16}{}} +\newlabel{index:pytexexam.exam.Exam.shuffle_question}{{1}{1}{Pytexexam main class}{section*.17}{}} +\newlabel{index:module-pytexexam.latexexam}{{1}{1}{Pytexexam main class}{section*.18}{}} +\newlabel{index:pytexexam.latexexam.LatexExamAnswer}{{1}{1}{Pytexexam main class}{section*.19}{}} +\newlabel{index:pytexexam.latexexam.LatexExamAnswer.get_latex_string}{{1}{1}{Pytexexam main class}{section*.20}{}} +\newlabel{index:pytexexam.latexexam.LatexExamPaper}{{1}{1}{Pytexexam main class}{section*.21}{}} +\newlabel{index:pytexexam.latexexam.LatexExamPaper.get_latex_string}{{1}{1}{Pytexexam main class}{section*.22}{}} +\newlabel{index:pytexexam.latexexam.LatexExamSolution}{{1}{2}{Pytexexam main class}{section*.23}{}} +\newlabel{index:pytexexam.latexexam.LatexExamSolution.get_latex_string}{{1}{2}{Pytexexam main class}{section*.24}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Pytexexam util class}{3}{chapter.2}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{index:module-pytexexam.latexexamutil}{{2}{5}{Pytexexam util class}{chapter.2}{}} -\newlabel{index:pytexexam-util-class}{{2}{5}{Pytexexam util class}{chapter.2}{}} -\newlabel{index:pytexexam.latexexamutil.ams_math_package}{{2}{5}{Pytexexam util class}{section*.37}{}} -\@writefile{toc}{\contentsline {chapter}{Python Module Index}{7}{section*.38}\protected@file@percent } -\@writefile{toc}{\contentsline {chapter}{Index}{9}{section*.39}\protected@file@percent } +\newlabel{index:module-pytexexam.latexexamutil}{{2}{3}{Pytexexam util class}{chapter.2}{}} +\newlabel{index:pytexexam-util-class}{{2}{3}{Pytexexam util class}{chapter.2}{}} +\newlabel{index:pytexexam.latexexamutil.ams_math_package}{{2}{3}{Pytexexam util class}{section*.25}{}} +\@writefile{toc}{\contentsline {chapter}{Python Module Index}{5}{section*.26}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{Index}{7}{section*.27}\protected@file@percent } diff --git a/docs/_build/latex/pytexexam.fdb_latexmk b/docs/_build/latex/pytexexam.fdb_latexmk index 4723474..d3bf4f3 100755 --- a/docs/_build/latex/pytexexam.fdb_latexmk +++ b/docs/_build/latex/pytexexam.fdb_latexmk @@ -1,13 +1,13 @@ # Fdb version 3 -["makeindex pytexexam.idx"] 1578498507 "pytexexam.idx" "pytexexam.ind" "pytexexam" 1578498507 - "pytexexam.idx" 1578498489 5226 821a86412e8b80ccc742988521f2f1fc "pdflatex" +["makeindex pytexexam.idx"] 1615969248 "pytexexam.idx" "pytexexam.ind" "pytexexam" 1615969249 + "pytexexam.idx" 1615969249 3790 99e619ee27d7f25c8b2f586437f29e30 "pdflatex" (generated) "pytexexam.ilg" "pytexexam.ind" -["pdflatex"] 1578498507 "pytexexam.tex" "pytexexam.pdf" "pytexexam" 1578498507 - "/etc/texmf/web2c/texmf.cnf" 1572078632 475 c0e671620eb5563b2130f56340a5fde8 "" +["pdflatex"] 1615969248 "pytexexam.tex" "pytexexam.pdf" "pytexexam" 1615969249 + "/etc/texmf/web2c/texmf.cnf" 1599396789 475 c0e671620eb5563b2130f56340a5fde8 "" "/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab "" - "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1511824771 3332 103109f5612ad95229751940c61aada0 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1136768653 1292 3059476c50a24578715759f22652f3d0 "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1136768653 1384 87406e4336af44af883a035f17f319d9 "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1136768653 1292 bd42be2f344128bff6d35d98474adfe3 "" @@ -20,7 +20,6 @@ "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm" 1136768653 7040 b2bd27e2bfe6f6948cbc3239cae7444f "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1136768653 4524 6bce29db5bc272ba5f332261583fee9c "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm" 1136768653 6880 f19b8995b61c334d78fc734065f6b4d4 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1136768653 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1136768653 4408 25b74d011a4c66b7f212c0cc3c90061b "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm" 1136768653 6672 e3ab9e37e925f3045c9005e6d1473d56 "" "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1136768653 4640 532ca3305aad10cc01d769f3f91f1029 "" @@ -53,115 +52,117 @@ "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf" 1136768653 2344 88834f8322177295b0266ecc4b0754c3 "" "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf" 1136768653 2344 44ff28c9ef2fc97180cd884f900fee71 "" "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf" 1136768653 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1136768653 3556 8a9a6dcbcd146ef985683f677f4758a6 "" "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf" 1136768653 2348 91706c542228501c410c266421fbe30c "" "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf" 1136768653 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" "/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf" 1496785618 7008 9ff5fdcc865b01beca2b0fe4a46231d4 "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def" 1559597743 78957 8ccc8f076dc1f8731a32705ec45dbe16 "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1559597743 18663 65edfad510bf35b984c9a04cea039b73 "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def" 1559597743 14454 aa00ca21bfc3aea36987a00dd6acf23f "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def" 1559597743 5178 5b21c28f495420030a8aa1a19d21f35f "" - "/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty" 1463608860 7612 729a8cc22a1ee0029997c7f74717ae05 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1463608860 8237 3b62ef1f7e2c23a328c814b3893bc11f "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1536701967 185392 b99a6d53180e04300c35e18725f31231 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1465595255 70864 bcd5b216757bd619ae692a151d90085d "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1463608860 7324 2310d1247db0114eb4726807c8837a0e "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty" 1536443070 1300 96620a7d94bc0ceb261d968770ce8315 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty" 1463608860 6797 90b7f83b0ad46826bc16058b1e3d48df "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty" 1463608860 8253 473e0e41f9adadb1977e8631b8f72ea6 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty" 1463608860 14040 ac8866aac45982ac84021584b0abb252 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty" 1463608860 18425 5b3c0c59d76fac78978b5558e83c1f36 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def" 1581719732 87344 ec128793fb5196bbcc1741e5366ddac1 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1581719732 18844 909add1631725af40d27125357ea816e "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def" 1581719732 15529 e761dc130df77f0ce9717a25d1b52a95 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def" 1580769195 5220 42a6518b499d20676051f269c61f4d9a "" + "/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b "" + "/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1573336935 6902 30fdaf7dc5636b8e3afa306210c45cae "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty" 1572645307 1057 525c2192b5febbd8c1f662c9468335bb "" + "/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1576624883 18552 1e1cc7b75da0dfaacce7cdcb27d306bf "" + "/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1523134290 2211 ca7ce284ab93c8eecdc6029dc5ccbd73 "" "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1523134290 4161 7f6eb9092061a11f87d08ed13515b48d "" - "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1544567569 85093 77cfa18ddbae4d9b74ade33d843686d3 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1580683321 85660 baee036978c7a91f4e2bba43f05e5945 "" "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1523134290 4116 32e6abd27229755a83a8b7f18e583890 "" "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1523134290 2432 8ff93b1137020e8f21930562a874ae66 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty" 1523050425 3142 41d54e810bb4bed45b915ab99f1df119 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1544567569 4573 e9e01f5b11821a77b916dad378cb86b8 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty" 1544567569 5052 b64c57f4a38aae0d2745f8298fa50814 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty" 1523050425 1942 125bdb0eb122d38c47905721b0682b1e "" - "/usr/share/texlive/texmf-dist/tex/latex/base/report.cls" 1544567569 22992 ac205d2578ad3f18cf73b50579632d1c "" - "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1544567569 8294 6d6e23d5169c0d89d173f6c7e08a005a "" - "/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def" 1544567569 10689 ce0f2353f9a1f42b29f591f3fe8e040a "" - "/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty" 1544567569 16156 a293f9cfd4f8552bb5d1028389f53e72 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd" 1523050425 2433 cdefd2509a12ba58001f2024f63aae9a "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def" 1523050425 7769 97b639552068544f7c98d557abb19f41 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu" 1544567569 4973 923be56c54607ca99f7cc085a8c7e52b "" + "/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty" 1580683321 3140 3b501b609b11ff7320ce1a19dbac0e3b "" + "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1581632200 4947 0c2888dd88121ae675fc6e82213623ba "" + "/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty" 1580683321 5050 8933a39ad74377accd18991c5eb90c58 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty" 1580683321 1940 dd4f2aa11c89855a3c47d09758782ba5 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/report.cls" 1580683321 23082 a0e9a5941c744eda6abe56770037a201 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1580683321 8446 9874cccac5fee462272c582807dbbf56 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty" 1581112666 2821 2c0928feafd5527387e29a1af774d030 "" "/usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty" 1264379041 1311 063f8536a047a2d9cb1803321f793f37 "" "/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty" 1215522782 2883 427a7f7cb58418a0394dbd85c80668f6 "" "/usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap" 1177721415 1207 4e0d96772f0d338847cbfb4eca683c81 "" "/usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap" 1215522782 1938 beaa4a8467aa0074076e0e19f2992e29 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" "/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1548974385 11128 a53805799bebfed6358fc1658a18e41f "" - "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1547588382 42733 79eb4d8b9f10bca9c5d3796630226536 "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1578950756 43158 eb6545ca94a288335910480ca6755b55 "" "/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" "/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty" 1292029257 19488 fdd52eb173b3197d748e1ec25acb042f "" "/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty" 1338588508 22449 7ec15c16d0d66790f28e90343c5434a3 "" - "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1525727744 41645 0653033a985e06c69a2a9cea9a95e31a "" + "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1578002852 41601 9cf6c5257b1bc7af01a58859749dd37a "" "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1523134385 15272 5a97061616e0c8b2aa79c6615ff769f4 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1523134385 9063 d0a305975932762117cd1f06a582f896 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1523134385 2591 6404d0c7d28505fb38ce0d86c2e28ae7 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1523134385 3977 cb9221976ed8a183afad65b59aa8629a "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1543704539 51744 477aad43ad6a7ba8c462d20c3e0808e0 "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1543704539 236074 d994150943d35d6af0d586a60cc78dd1 "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1465687530 12949 81e4e808884a8f0e276b69410e234656 "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1543704539 14098 b4e1ecab4699a0341b8e1349e4c53fb1 "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1543704539 122411 537c1e113664b098b6572dbc27a726af "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1580683321 16932 04729abe63b66ec59ea56edcd722b058 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1580683321 9067 1b996612394a52e1efe89c8bfe8a5892 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 "" + "/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1579642962 50630 3d9728faf8630190cf601ce2cbe470d9 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1579642962 238752 60dd338d71b6a4ab2192131f73dc908b "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1579642962 13244 0070bcab7b5a88187847128d22faf4d8 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1579642962 14134 32b36577d311ddb6522413c7581ee968 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1579642962 122447 2f3bff59bea0a0fa94e11cc69e0f3066 "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1575152344 22520 c4c2dab203104295e1e618be7e5c0f5b "" + "/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def" 1580854751 25404 9d60f463a00d154207ec0048dee27cf0 "" "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" - "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1254097189 235 6031e5765137be07eed51a510b2b8fb7 "" + "/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 "" "/usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap" 1215649417 1866 c1c12138091b4a8edd4a24a940e6f792 "" "/usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap" 1215649417 2370 3b1f71b14b974f07cef532db09ae9ee0 "" "/usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap" 1215649417 3001 252c8ca42b06a22cb1a11c0e47790c6e "" "/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty" 1364856750 852 0e34dbb72efc69fa07602405ad95585e "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1463608860 3834 4363110eb0ef1eb2b71c8fcbcdb6c357 "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty" 1463608860 12095 5337833c991d80788a43d3ce26bd1c46 "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty" 1463608860 7075 2fe3d848bba95f139de11ded085e74aa "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1463608860 3720 63669daeb0b67d5fbec899824e2f1491 "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1463608860 22417 1d9df1eb66848aa31b18a593099cf45c "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1463608860 9581 023642318cef9f4677efe364de1e2a27 "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1575152444 3822 b53c749cd81352b4679a35b0dafefb95 "" "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty" 1536789184 2757 ea00cb4f4e9abc702916f74d3812ef67 "" - "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty" 1547677674 4152 3f6e512e6999979e82f39978a3e61b9e "" + "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty" 1579802043 4151 bd592f37b856f80e699388b77e72d753 "" + "/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty" 1574631863 19963 36fd8e818f9f0f32e2db8413d4970122 "" "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1137110629 798 d5895e9edc628f2be019beb2c0ec66df "" "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd" 1137110629 1488 9a55ac1cde6b4798a7f56844bb75a553 "" "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1137110629 774 61d7da1e9f9e74989b196d147e623736 "" "/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty" 1156702453 857 6c716f26c5eadfb81029fcd6ce2d45e6 "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1137110629 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" + "/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575674187 9715 b051d5b493d9fe5f4bc251462d039e5f "" "/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty" 1403566480 13791 8c83287d79183c3bf58fd70871e8a70b "" - "/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty" 1458858524 37387 afa86533e532701faf233f3f592c61e0 "" - "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1546812253 12527 31ab547f6520657998ecf91709f950ac "" - "/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty" 1546812253 12131 6791c5e94fb3ca8579d185a449d8b41e "" + "/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty" 1571259403 48596 2b6a95da931c07a430b1a61904aaa42d "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1580683321 12560 ce3f59ceae9d9a27bfe037d6bf1d903c "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty" 1580683321 12133 b1e3e65b69714dbfcc5e6c0b19d66b50 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty" 1580683321 31532 04852e45d7c17cb384689d2f83b628d3 "" "/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty" 1334873510 1048 517e01cde97c1c0baf72e69d43aa5a2e "" "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" "/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty" 1238697683 10894 d359a13923460b2a73d4312d613554c8 "" "/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1137111090 26220 3701aebf80ccdef248c0c20dd062fea9 "" "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1463002160 55589 34128738f682d033422ca125f82e5d62 "" - "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1562720991 35073 2a40cfca74fcd5e2568b569ccaadf3f1 "" - "/usr/share/texmf/web2c/texmf.cnf" 1562720991 35073 2a40cfca74fcd5e2568b569ccaadf3f1 "" - "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1572079330 181146 288b41b0e055fcdf16cfc31e9d36ec50 "" - "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1575944287 1289389 878bbe82fae4cda38e9dd8ecc6731082 "" - "footnotehyper-sphinx.sty" 1574604546 8888 1bbd7bdeae8c8bed1d10d551bddb1cc9 "" - "pytexexam.aux" 1578498489 5088 389863301983b32f8959532c63f1f154 "pdflatex" - "pytexexam.ind" 1578498507 3776 c8e73896faf2d75f4f525f5ab8daa7bd "makeindex pytexexam.idx" - "pytexexam.out" 1578498489 514 6a62b5a35d2dc34207f518c9b1b5da50 "pdflatex" - "pytexexam.tex" 1578498484 21069 8a320efd55872dd7445b162040efd92a "" - "pytexexam.toc" 1578498489 289 d095198db3bc2ec47df9ed447f70db7e "pdflatex" - "sphinx.sty" 1574604546 77684 8fb97306ac83d50d8517c97072345a1d "" - "sphinxhighlight.sty" 1578498507 8137 38a433148fcb7611515a989ff1750dd5 "" - "sphinxmanual.cls" 1574604546 3764 e7c0a8da02dc45450256dd4cfdafb426 "" - "sphinxmessages.sty" 1578498507 731 4c7a75a0ce6092b44bece19aa46febe9 "" - "sphinxmulticell.sty" 1574604546 14618 0defbdc8536ad2e67f1eac6a1431bc55 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/usr/share/texmf/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1599396816 144194 e6c7723c5e81944dd71c3bb963662fa8 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1599396818 5067498 da53da32b8ffa5e240725cf5a2fc0f00 "" + "footnotehyper-sphinx.sty" 1615969033 13076 494d8d655f805dc10b53008469c289a2 "" + "pytexexam.aux" 1615969249 3875 8038fac2a69d93d93b1e312b626a2617 "pdflatex" + "pytexexam.ind" 1615969248 2925 6588c37668cbff5841565ce5874d7caf "makeindex pytexexam.idx" + "pytexexam.out" 1615969249 514 fa7ed81a6029e6460152d0d572e04853 "pdflatex" + "pytexexam.tex" 1615969247 13112 3ecb404f45a69492df4f25b8340144a8 "" + "pytexexam.toc" 1615969249 285 bbdba5e2e140d3286930073d553b7378 "pdflatex" + "sphinx.sty" 1615969033 91458 532cd893425be1ee8212ce283449999c "" + "sphinxhighlight.sty" 1615969247 8137 38a433148fcb7611515a989ff1750dd5 "" + "sphinxmanual.cls" 1615969033 4236 124cd90deb92742b5d3922bfc2cd70c0 "" + "sphinxmessages.sty" 1615969247 745 3f5fcd6cdd7964ed608767954a8ced6f "" + "sphinxmulticell.sty" 1615969033 14606 0b6edc2b1a83546ed92026d1f6a311b5 "" (generated) - "pytexexam.pdf" "pytexexam.idx" + "pytexexam.pdf" "pytexexam.out" "pytexexam.aux" - "pytexexam.log" "pytexexam.toc" + "pytexexam.log" diff --git a/docs/_build/latex/pytexexam.fls b/docs/_build/latex/pytexexam.fls index 21f1f5e..0313ac4 100755 --- a/docs/_build/latex/pytexexam.fls +++ b/docs/_build/latex/pytexexam.fls @@ -1,4 +1,4 @@ -PWD /home/binh/PycharmProjects/pytexexam/docs/_build/latex +PWD /home/binh/Data/PycharmProjects/pytexexam/docs/_build/latex INPUT /etc/texmf/web2c/texmf.cnf INPUT /usr/share/texmf/web2c/texmf.cnf INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf @@ -17,8 +17,6 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap @@ -52,8 +50,8 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty INPUT sphinx.sty INPUT sphinx.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty @@ -70,10 +68,6 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty @@ -115,72 +109,85 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty INPUT sphinxhighlight.sty INPUT sphinxhighlight.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg -INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty INPUT sphinxmessages.sty INPUT sphinxmessages.sty OUTPUT pytexexam.idx +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def INPUT pytexexam.aux INPUT pytexexam.aux OUTPUT pytexexam.aux -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty INPUT pytexexam.out INPUT pytexexam.out INPUT pytexexam.out @@ -250,9 +257,6 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm -INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd -INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd -INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm @@ -267,7 +271,6 @@ INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm -INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm INPUT pytexexam.ind diff --git a/docs/_build/latex/pytexexam.idx b/docs/_build/latex/pytexexam.idx index 91da208..177c989 100755 --- a/docs/_build/latex/pytexexam.idx +++ b/docs/_build/latex/pytexexam.idx @@ -1,36 +1,28 @@ \indexentry{Answer (class in pytexexam.answer)@\spxentry{Answer}\spxextra{class in pytexexam.answer}|hyperpage}{1} -\indexentry{pytexexam.question (module)@\spxentry{pytexexam.question}\spxextra{module}|hyperpage}{1} +\indexentry{module@\spxentry{module}!pytexexam.question@\spxentry{pytexexam.question}|hyperpage}{1} +\indexentry{pytexexam.question@\spxentry{pytexexam.question}!module@\spxentry{module}|hyperpage}{1} \indexentry{Question (class in pytexexam.question)@\spxentry{Question}\spxextra{class in pytexexam.question}|hyperpage}{1} -\indexentry{answer\_a() (pytexexam.question.Question method)@\spxentry{answer\_a()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} -\indexentry{answer\_b() (pytexexam.question.Question method)@\spxentry{answer\_b()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} -\indexentry{answer\_c() (pytexexam.question.Question method)@\spxentry{answer\_c()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} -\indexentry{answer\_d() (pytexexam.question.Question method)@\spxentry{answer\_d()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} -\indexentry{answers() (pytexexam.question.Question method)@\spxentry{answers()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} -\indexentry{get\_answer() (pytexexam.question.Question method)@\spxentry{get\_answer()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} -\indexentry{get\_answer\_column() (pytexexam.question.Question method)@\spxentry{get\_answer\_column()}\spxextra{pytexexam.question.Question method}|hyperpage}{2} -\indexentry{get\_true\_answer() (pytexexam.question.Question method)@\spxentry{get\_true\_answer()}\spxextra{pytexexam.question.Question method}|hyperpage}{2} -\indexentry{question (pytexexam.question.Question attribute)@\spxentry{question}\spxextra{pytexexam.question.Question attribute}|hyperpage}{2} -\indexentry{set\_answer\_column() (pytexexam.question.Question method)@\spxentry{set\_answer\_column()}\spxextra{pytexexam.question.Question method}|hyperpage}{2} -\indexentry{shuffle\_answer() (pytexexam.question.Question method)@\spxentry{shuffle\_answer()}\spxextra{pytexexam.question.Question method}|hyperpage}{2} -\indexentry{solution() (pytexexam.question.Question method)@\spxentry{solution()}\spxextra{pytexexam.question.Question method}|hyperpage}{2} -\indexentry{pytexexam.exam (module)@\spxentry{pytexexam.exam}\spxextra{module}|hyperpage}{2} -\indexentry{Exam (class in pytexexam.exam)@\spxentry{Exam}\spxextra{class in pytexexam.exam}|hyperpage}{2} -\indexentry{question\_list (pytexexam.exam.Exam attribute)@\spxentry{question\_list}\spxextra{pytexexam.exam.Exam attribute}|hyperpage}{2} -\indexentry{shuffle\_question() (pytexexam.exam.Exam method)@\spxentry{shuffle\_question()}\spxextra{pytexexam.exam.Exam method}|hyperpage}{2} -\indexentry{pytexexam.latexexam (module)@\spxentry{pytexexam.latexexam}\spxextra{module}|hyperpage}{2} -\indexentry{LatexExam (class in pytexexam.latexexam)@\spxentry{LatexExam}\spxextra{class in pytexexam.latexexam}|hyperpage}{2} -\indexentry{add\_user\_preamble() (pytexexam.latexexam.LatexExam method)@\spxentry{add\_user\_preamble()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{2} -\indexentry{exam\_content (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_content}\spxextra{pytexexam.latexexam.LatexExam attribute}|hyperpage}{2} -\indexentry{exam\_header (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_header}\spxextra{pytexexam.latexexam.LatexExam attribute}|hyperpage}{2} -\indexentry{exam\_title (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_title}\spxextra{pytexexam.latexexam.LatexExam attribute}|hyperpage}{2} -\indexentry{export\_pdf\_answer() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{2} -\indexentry{export\_pdf\_exam() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{2} -\indexentry{export\_pdf\_solution() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{3} -\indexentry{export\_tex\_answer() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{3} -\indexentry{export\_tex\_exam() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{3} -\indexentry{export\_tex\_solution() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}|hyperpage}{3} -\indexentry{question\_theorem (pytexexam.latexexam.LatexExam attribute)@\spxentry{question\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}|hyperpage}{3} -\indexentry{solution\_theorem (pytexexam.latexexam.LatexExam attribute)@\spxentry{solution\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}|hyperpage}{3} -\indexentry{user\_preamble (pytexexam.latexexam.LatexExam attribute)@\spxentry{user\_preamble}\spxextra{pytexexam.latexexam.LatexExam attribute}|hyperpage}{3} -\indexentry{pytexexam.latexexamutil (module)@\spxentry{pytexexam.latexexamutil}\spxextra{module}|hyperpage}{5} -\indexentry{ams\_math\_package() (in module pytexexam.latexexamutil)@\spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}|hyperpage}{5} +\indexentry{answer\_column (pytexexam.question.Question attribute)@\spxentry{answer\_column}\spxextra{pytexexam.question.Question attribute}|hyperpage}{1} +\indexentry{answers (pytexexam.question.Question attribute)@\spxentry{answers}\spxextra{pytexexam.question.Question attribute}|hyperpage}{1} +\indexentry{get\_true\_answer\_key() (pytexexam.question.Question method)@\spxentry{get\_true\_answer\_key()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} +\indexentry{print\_question\_latex() (pytexexam.question.Question method)@\spxentry{print\_question\_latex()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} +\indexentry{print\_solution\_latex() (pytexexam.question.Question method)@\spxentry{print\_solution\_latex()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} +\indexentry{question (pytexexam.question.Question attribute)@\spxentry{question}\spxextra{pytexexam.question.Question attribute}|hyperpage}{1} +\indexentry{shuffle\_answer() (pytexexam.question.Question method)@\spxentry{shuffle\_answer()}\spxextra{pytexexam.question.Question method}|hyperpage}{1} +\indexentry{solution (pytexexam.question.Question attribute)@\spxentry{solution}\spxextra{pytexexam.question.Question attribute}|hyperpage}{1} +\indexentry{module@\spxentry{module}!pytexexam.exam@\spxentry{pytexexam.exam}|hyperpage}{1} +\indexentry{pytexexam.exam@\spxentry{pytexexam.exam}!module@\spxentry{module}|hyperpage}{1} +\indexentry{Exam (class in pytexexam.exam)@\spxentry{Exam}\spxextra{class in pytexexam.exam}|hyperpage}{1} +\indexentry{question\_list (pytexexam.exam.Exam attribute)@\spxentry{question\_list}\spxextra{pytexexam.exam.Exam attribute}|hyperpage}{1} +\indexentry{shuffle\_question() (pytexexam.exam.Exam method)@\spxentry{shuffle\_question()}\spxextra{pytexexam.exam.Exam method}|hyperpage}{1} +\indexentry{module@\spxentry{module}!pytexexam.latexexam@\spxentry{pytexexam.latexexam}|hyperpage}{1} +\indexentry{pytexexam.latexexam@\spxentry{pytexexam.latexexam}!module@\spxentry{module}|hyperpage}{1} +\indexentry{LatexExamAnswer (class in pytexexam.latexexam)@\spxentry{LatexExamAnswer}\spxextra{class in pytexexam.latexexam}|hyperpage}{1} +\indexentry{get\_latex\_string() (pytexexam.latexexam.LatexExamAnswer method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamAnswer method}|hyperpage}{1} +\indexentry{LatexExamPaper (class in pytexexam.latexexam)@\spxentry{LatexExamPaper}\spxextra{class in pytexexam.latexexam}|hyperpage}{1} +\indexentry{get\_latex\_string() (pytexexam.latexexam.LatexExamPaper method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamPaper method}|hyperpage}{1} +\indexentry{LatexExamSolution (class in pytexexam.latexexam)@\spxentry{LatexExamSolution}\spxextra{class in pytexexam.latexexam}|hyperpage}{2} +\indexentry{get\_latex\_string() (pytexexam.latexexam.LatexExamSolution method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamSolution method}|hyperpage}{2} +\indexentry{module@\spxentry{module}!pytexexam.latexexamutil@\spxentry{pytexexam.latexexamutil}|hyperpage}{3} +\indexentry{pytexexam.latexexamutil@\spxentry{pytexexam.latexexamutil}!module@\spxentry{module}|hyperpage}{3} +\indexentry{ams\_math\_package() (in module pytexexam.latexexamutil)@\spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}|hyperpage}{3} diff --git a/docs/_build/latex/pytexexam.ilg b/docs/_build/latex/pytexexam.ilg index e5a365f..3321471 100755 --- a/docs/_build/latex/pytexexam.ilg +++ b/docs/_build/latex/pytexexam.ilg @@ -1,7 +1,7 @@ This is makeindex, version 2.15 [TeX Live 2019] (kpathsea + Thai support). Scanning style file ./python.ist.......done (7 attributes redefined, 0 ignored). -Scanning input file pytexexam.idx....done (36 entries accepted, 0 rejected). -Sorting entries....done (206 comparisons). -Generating output file pytexexam.ind....done (77 lines written, 0 warnings). +Scanning input file pytexexam.idx....done (28 entries accepted, 0 rejected). +Sorting entries....done (163 comparisons). +Generating output file pytexexam.ind....done (69 lines written, 0 warnings). Output written in pytexexam.ind. Transcript written in pytexexam.ilg. diff --git a/docs/_build/latex/pytexexam.ind b/docs/_build/latex/pytexexam.ind index 6d2ab51..37433d7 100755 --- a/docs/_build/latex/pytexexam.ind +++ b/docs/_build/latex/pytexexam.ind @@ -5,73 +5,65 @@ \let\spxextra \sphinxstyleindexextra \bigletter A - \item \spxentry{add\_user\_preamble()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{2} - \item \spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}, \hyperpage{5} + \item \spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}, \hyperpage{3} \item \spxentry{Answer}\spxextra{class in pytexexam.answer}, \hyperpage{1} - \item \spxentry{answer\_a()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} - \item \spxentry{answer\_b()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} - \item \spxentry{answer\_c()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} - \item \spxentry{answer\_d()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} - \item \spxentry{answers()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} + \item \spxentry{answer\_column}\spxextra{pytexexam.question.Question attribute}, \hyperpage{1} + \item \spxentry{answers}\spxextra{pytexexam.question.Question attribute}, \hyperpage{1} \indexspace \bigletter E - \item \spxentry{Exam}\spxextra{class in pytexexam.exam}, \hyperpage{2} - \item \spxentry{exam\_content}\spxextra{pytexexam.latexexam.LatexExam attribute}, \hyperpage{2} - \item \spxentry{exam\_header}\spxextra{pytexexam.latexexam.LatexExam attribute}, \hyperpage{2} - \item \spxentry{exam\_title}\spxextra{pytexexam.latexexam.LatexExam attribute}, \hyperpage{2} - \item \spxentry{export\_pdf\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{2} - \item \spxentry{export\_pdf\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{2} - \item \spxentry{export\_pdf\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{3} - \item \spxentry{export\_tex\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{3} - \item \spxentry{export\_tex\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{3} - \item \spxentry{export\_tex\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}, - \hyperpage{3} + \item \spxentry{Exam}\spxextra{class in pytexexam.exam}, \hyperpage{1} \indexspace \bigletter G - \item \spxentry{get\_answer()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} - \item \spxentry{get\_answer\_column()}\spxextra{pytexexam.question.Question method}, + \item \spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamAnswer method}, + \hyperpage{1} + \item \spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamPaper method}, + \hyperpage{1} + \item \spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamSolution method}, \hyperpage{2} - \item \spxentry{get\_true\_answer()}\spxextra{pytexexam.question.Question method}, \hyperpage{2} + \item \spxentry{get\_true\_answer\_key()}\spxextra{pytexexam.question.Question method}, + \hyperpage{1} \indexspace \bigletter L - \item \spxentry{LatexExam}\spxextra{class in pytexexam.latexexam}, \hyperpage{2} + \item \spxentry{LatexExamAnswer}\spxextra{class in pytexexam.latexexam}, \hyperpage{1} + \item \spxentry{LatexExamPaper}\spxextra{class in pytexexam.latexexam}, \hyperpage{1} + \item \spxentry{LatexExamSolution}\spxextra{class in pytexexam.latexexam}, \hyperpage{2} + + \indexspace + \bigletter M + \item \spxentry{module} + \subitem \spxentry{pytexexam.exam}, \hyperpage{1} + \subitem \spxentry{pytexexam.latexexam}, \hyperpage{1} + \subitem \spxentry{pytexexam.latexexamutil}, \hyperpage{3} + \subitem \spxentry{pytexexam.question}, \hyperpage{1} \indexspace \bigletter P - \item \spxentry{pytexexam.exam}\spxextra{module}, \hyperpage{2} - \item \spxentry{pytexexam.latexexam}\spxextra{module}, \hyperpage{2} - \item \spxentry{pytexexam.latexexamutil}\spxextra{module}, \hyperpage{5} - \item \spxentry{pytexexam.question}\spxextra{module}, \hyperpage{1} + \item \spxentry{print\_question\_latex()}\spxextra{pytexexam.question.Question method}, + \hyperpage{1} + \item \spxentry{print\_solution\_latex()}\spxextra{pytexexam.question.Question method}, + \hyperpage{1} + \item \spxentry{pytexexam.exam} + \subitem \spxentry{module}, \hyperpage{1} + \item \spxentry{pytexexam.latexexam} + \subitem \spxentry{module}, \hyperpage{1} + \item \spxentry{pytexexam.latexexamutil} + \subitem \spxentry{module}, \hyperpage{3} + \item \spxentry{pytexexam.question} + \subitem \spxentry{module}, \hyperpage{1} \indexspace \bigletter Q \item \spxentry{Question}\spxextra{class in pytexexam.question}, \hyperpage{1} - \item \spxentry{question}\spxextra{pytexexam.question.Question attribute}, \hyperpage{2} - \item \spxentry{question\_list}\spxextra{pytexexam.exam.Exam attribute}, \hyperpage{2} - \item \spxentry{question\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}, - \hyperpage{3} + \item \spxentry{question}\spxextra{pytexexam.question.Question attribute}, \hyperpage{1} + \item \spxentry{question\_list}\spxextra{pytexexam.exam.Exam attribute}, \hyperpage{1} \indexspace \bigletter S - \item \spxentry{set\_answer\_column()}\spxextra{pytexexam.question.Question method}, - \hyperpage{2} - \item \spxentry{shuffle\_answer()}\spxextra{pytexexam.question.Question method}, \hyperpage{2} - \item \spxentry{shuffle\_question()}\spxextra{pytexexam.exam.Exam method}, \hyperpage{2} - \item \spxentry{solution()}\spxextra{pytexexam.question.Question method}, \hyperpage{2} - \item \spxentry{solution\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}, - \hyperpage{3} - - \indexspace - \bigletter U - \item \spxentry{user\_preamble}\spxextra{pytexexam.latexexam.LatexExam attribute}, \hyperpage{3} + \item \spxentry{shuffle\_answer()}\spxextra{pytexexam.question.Question method}, \hyperpage{1} + \item \spxentry{shuffle\_question()}\spxextra{pytexexam.exam.Exam method}, \hyperpage{1} + \item \spxentry{solution}\spxextra{pytexexam.question.Question attribute}, \hyperpage{1} \end{sphinxtheindex} diff --git a/docs/_build/latex/pytexexam.log b/docs/_build/latex/pytexexam.log index 5482419..9d6e008 100755 --- a/docs/_build/latex/pytexexam.log +++ b/docs/_build/latex/pytexexam.log @@ -1,30 +1,32 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2019.12.10) 8 JAN 2020 22:48 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 17 MAR 2021 15:20 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **pytexexam.tex (./pytexexam.tex -LaTeX2e <2018-12-01> -(./sphinxmanual.cls -Document Class: sphinxmanual 2018/12/23 v2.0 Document class (Sphinx manual) +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> (./sphinxmanual.cls +Document Class: sphinxmanual 2019/12/01 v2.3.0 Document class (Sphinx manual) (/usr/share/texlive/texmf-dist/tex/latex/base/report.cls -Document Class: report 2018/09/03 v1.4i Standard LaTeX document class +Document Class: report 2019/12/20 v1.4l Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2018/09/03 v1.4i Standard LaTeX file (size option) -) -\c@part=\count80 -\c@chapter=\count81 -\c@section=\count82 -\c@subsection=\count83 -\c@subsubsection=\count84 -\c@paragraph=\count85 -\c@subparagraph=\count86 -\c@figure=\count87 -\c@table=\count88 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -)) +File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count167 +\c@chapter=\count168 +\c@section=\count169 +\c@subsection=\count170 +\c@subsubsection=\count171 +\c@paragraph=\count172 +\c@subparagraph=\count173 +\c@figure=\count174 +\c@table=\count175 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 +) +LaTeX Info: Redefining \and on input line 35. +) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty Package: inputenc 2018/08/11 v1.3c Input encoding file \inpenc@prehook=\toks14 @@ -41,15 +43,11 @@ Package: inputenc 2018/08/11 v1.3c Input encoding file Package: cmap 2008/03/06 v1.0h CMap support: searchable PDF ) (/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -Package: fontenc 2018/08/11 v2.0j Standard LaTeX package - -(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def -File: t1enc.def 2018/08/11 v2.0j Standard LaTeX file -LaTeX Font Info: Redeclaring font encoding T1 on input line 48. -)<>) +Package: fontenc 2020/02/11 v2.0o Standard LaTeX package +<>) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2018/12/01 v2.17b AMS math features -\@mathmargin=\skip43 +Package: amsmath 2020/01/20 v2.17e AMS math features +\@mathmargin=\skip49 For additional information on amsmath, use the `?' option. (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty @@ -58,52 +56,52 @@ Package: amstext 2000/06/29 v2.01 AMS text (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions \@emptytoks=\toks16 -\ex@=\dimen103 +\ex@=\dimen135 )) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 +\pmbraise@=\dimen136 ) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty Package: amsopn 2016/03/08 v2.02 operator names ) -\inf@bad=\count89 -LaTeX Info: Redefining \frac on input line 223. -\uproot@=\count90 -\leftroot@=\count91 -LaTeX Info: Redefining \overline on input line 385. -\classnum@=\count92 -\DOTSCASE@=\count93 -LaTeX Info: Redefining \ldots on input line 482. -LaTeX Info: Redefining \dots on input line 485. -LaTeX Info: Redefining \cdots on input line 606. -\Mathstrutbox@=\box27 -\strutbox@=\box28 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 729. -LaTeX Font Info: Redeclaring font encoding OMS on input line 730. -\macc@depth=\count94 -\c@MaxMatrixCols=\count95 -\dotsspace@=\muskip10 -\c@parentequation=\count96 -\dspbrk@lvl=\count97 +\inf@bad=\count176 +LaTeX Info: Redefining \frac on input line 227. +\uproot@=\count177 +\leftroot@=\count178 +LaTeX Info: Redefining \overline on input line 389. +\classnum@=\count179 +\DOTSCASE@=\count180 +LaTeX Info: Redefining \ldots on input line 486. +LaTeX Info: Redefining \dots on input line 489. +LaTeX Info: Redefining \cdots on input line 610. +\Mathstrutbox@=\box45 +\strutbox@=\box46 +\big@size=\dimen137 +LaTeX Font Info: Redeclaring font encoding OML on input line 733. +LaTeX Font Info: Redeclaring font encoding OMS on input line 734. +\macc@depth=\count181 +\c@MaxMatrixCols=\count182 +\dotsspace@=\muskip16 +\c@parentequation=\count183 +\dspbrk@lvl=\count184 \tag@help=\toks17 -\row@=\count98 -\column@=\count99 -\maxfields@=\count100 +\row@=\count185 +\column@=\count186 +\maxfields@=\count187 \andhelp@=\toks18 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 +\eqnshift@=\dimen138 +\alignsep@=\dimen139 +\tagshift@=\dimen140 +\tagwidth@=\dimen141 +\totwidth@=\dimen142 +\lineht@=\dimen143 \@envbody=\toks19 -\multlinegap=\skip44 -\multlinetaggap=\skip45 +\multlinegap=\skip50 +\multlinetaggap=\skip51 \mathdisplay@stack=\toks20 -LaTeX Info: Redefining \[ on input line 2844. -LaTeX Info: Redefining \] on input line 2845. +LaTeX Info: Redefining \[ on input line 2859. +LaTeX Info: Redefining \] on input line 2860. ) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty Package: amssymb 2013/01/14 v3.01 AMS font symbols @@ -112,59 +110,68 @@ Package: amssymb 2013/01/14 v3.01 AMS font symbols Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support \symAMSa=\mathgroup4 \symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. )) (/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty -Package: babel 2019/06/03 3.32 The Babel package +Package: babel 2020/02/14 3.40 The Babel package (/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def -File: switch.def 2019/06/03 3.32 Babel switching mechanism +File: switch.def 2020/02/14 3.40 Babel switching mechanism ) (/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf Language: english 2017/06/06 v3.3r English support from the babel system (/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def -File: babel.def 2019/06/03 3.32 Babel common definitions -\babel@savecnt=\count101 -\U@D=\dimen112 +File: babel.def 2020/02/14 3.40 Babel common definitions +\babel@savecnt=\count188 +\U@D=\dimen144 (/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def) -\bbl@dirlevel=\count102 -) -\l@canadian = a dialect from \language\l@american -\l@australian = a dialect from \language\l@british -\l@newzealand = a dialect from \language\l@british +\bbl@readstream=\read2 +\bbl@dirlevel=\count189 +) +Package babel Info: \l@british = using hyphenrules for english +(babel) (\language0) on input line 82. +Package babel Info: \l@UKenglish = using hyphenrules for english +(babel) (\language0) on input line 83. +Package babel Info: \l@canadian = using hyphenrules for english +(babel) (\language0) on input line 102. +Package babel Info: \l@australian = using hyphenrules for english +(babel) (\language0) on input line 105. +Package babel Info: \l@newzealand = using hyphenrules for english +(babel) (\language0) on input line 108. )) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) ) (/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters) -\RW=\skip46 -\mylen=\skip47 -\myhi=\skip48 -\px=\skip49 -\py=\skip50 -\pyy=\skip51 -\pxx=\skip52 -\c@AlphaCnt=\count103 -\c@AlphaDecCnt=\count104 +\RW=\skip52 +\mylen=\skip53 +\myhi=\skip54 +\px=\skip55 +\py=\skip56 +\pyy=\skip57 +\pxx=\skip58 +\c@AlphaCnt=\count190 +\c@AlphaDecCnt=\count191 ) (./sphinx.sty -Package: sphinx 2019/09/02 v2.2.1 LaTeX package (Sphinx markup) +Package: sphinx 2021/01/23 v3.5.0 LaTeX package (Sphinx markup) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) ) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty Package: keyval 2014/10/28 v1.15 key=value parser (DPC) \KV@toks@=\toks21 ) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) (/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2016/01/03 v1.10 sin cos tan (DPC) @@ -172,255 +179,101 @@ Package: trig 2016/01/03 v1.10 sin cos tan (DPC) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) -Package graphics Info: Driver file: pdftex.def on input line 99. +Package graphics Info: Driver file: pdftex.def on input line 105. (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex )) -\Gin@req@height=\dimen113 -\Gin@req@width=\dimen114 +\Gin@req@height=\dimen145 +\Gin@req@width=\dimen146 ) (/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer s -\f@nch@headwidth=\skip53 -\f@nch@O@elh=\skip54 -\f@nch@O@erh=\skip55 -\f@nch@O@olh=\skip56 -\f@nch@O@orh=\skip57 -\f@nch@O@elf=\skip58 -\f@nch@O@erf=\skip59 -\f@nch@O@olf=\skip60 -\f@nch@O@orf=\skip61 +\f@nch@headwidth=\skip59 +\f@nch@O@elh=\skip60 +\f@nch@O@erh=\skip61 +\f@nch@O@olh=\skip62 +\f@nch@O@orh=\skip63 +\f@nch@O@elf=\skip64 +\f@nch@O@erf=\skip65 +\f@nch@O@olf=\skip66 +\f@nch@O@orf=\skip67 ) (/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty -Package: textcomp 2018/08/11 v2.0j Standard LaTeX package -Package textcomp Info: Sub-encoding information: -(textcomp) 5 = only ISO-Adobe without \textcurrency -(textcomp) 4 = 5 + \texteuro -(textcomp) 3 = 4 + \textohm -(textcomp) 2 = 3 + \textestimated + \textcurrency -(textcomp) 1 = TS1 - \textcircled - \t -(textcomp) 0 = TS1 (full) -(textcomp) Font families with sub-encoding setting implement -(textcomp) only a restricted character set as indicated. -(textcomp) Family '?' is the default used for unknown fonts. -(textcomp) See the documentation for details. -Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. - -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file -Now handling font encoding TS1 ... -... processing UTF-8 mapping file for font encoding TS1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu -File: ts1enc.dfu 2018/10/05 v1.2f UTF-8 support for inputenc - defining Unicode char U+00A2 (decimal 162) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00A4 (decimal 164) - defining Unicode char U+00A5 (decimal 165) - defining Unicode char U+00A6 (decimal 166) - defining Unicode char U+00A7 (decimal 167) - defining Unicode char U+00A8 (decimal 168) - defining Unicode char U+00A9 (decimal 169) - defining Unicode char U+00AA (decimal 170) - defining Unicode char U+00AC (decimal 172) - defining Unicode char U+00AE (decimal 174) - defining Unicode char U+00AF (decimal 175) - defining Unicode char U+00B0 (decimal 176) - defining Unicode char U+00B1 (decimal 177) - defining Unicode char U+00B2 (decimal 178) - defining Unicode char U+00B3 (decimal 179) - defining Unicode char U+00B4 (decimal 180) - defining Unicode char U+00B5 (decimal 181) - defining Unicode char U+00B6 (decimal 182) - defining Unicode char U+00B7 (decimal 183) - defining Unicode char U+00B9 (decimal 185) - defining Unicode char U+00BA (decimal 186) - defining Unicode char U+00BC (decimal 188) - defining Unicode char U+00BD (decimal 189) - defining Unicode char U+00BE (decimal 190) - defining Unicode char U+00D7 (decimal 215) - defining Unicode char U+00F7 (decimal 247) - defining Unicode char U+0192 (decimal 402) - defining Unicode char U+02C7 (decimal 711) - defining Unicode char U+02D8 (decimal 728) - defining Unicode char U+02DD (decimal 733) - defining Unicode char U+0E3F (decimal 3647) - defining Unicode char U+2016 (decimal 8214) - defining Unicode char U+2020 (decimal 8224) - defining Unicode char U+2021 (decimal 8225) - defining Unicode char U+2022 (decimal 8226) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+203B (decimal 8251) - defining Unicode char U+203D (decimal 8253) - defining Unicode char U+2044 (decimal 8260) - defining Unicode char U+204E (decimal 8270) - defining Unicode char U+2052 (decimal 8274) - defining Unicode char U+20A1 (decimal 8353) - defining Unicode char U+20A4 (decimal 8356) - defining Unicode char U+20A6 (decimal 8358) - defining Unicode char U+20A9 (decimal 8361) - defining Unicode char U+20AB (decimal 8363) - defining Unicode char U+20AC (decimal 8364) - defining Unicode char U+20B1 (decimal 8369) - defining Unicode char U+2103 (decimal 8451) - defining Unicode char U+2116 (decimal 8470) - defining Unicode char U+2117 (decimal 8471) - defining Unicode char U+211E (decimal 8478) - defining Unicode char U+2120 (decimal 8480) - defining Unicode char U+2122 (decimal 8482) - defining Unicode char U+2126 (decimal 8486) - defining Unicode char U+2127 (decimal 8487) - defining Unicode char U+212E (decimal 8494) - defining Unicode char U+2190 (decimal 8592) - defining Unicode char U+2191 (decimal 8593) - defining Unicode char U+2192 (decimal 8594) - defining Unicode char U+2193 (decimal 8595) - defining Unicode char U+2329 (decimal 9001) - defining Unicode char U+232A (decimal 9002) - defining Unicode char U+2422 (decimal 9250) - defining Unicode char U+25E6 (decimal 9702) - defining Unicode char U+25EF (decimal 9711) - defining Unicode char U+266A (decimal 9834) - defining Unicode char U+FEFF (decimal 65279) -)) -LaTeX Info: Redefining \oldstylenums on input line 334. -Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. -Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. -Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. -Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. -Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. -Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. -Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. -Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. -Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. -Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. -Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. -Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. -Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. -Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. -Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. -Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. -Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. -Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. -Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. -Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. -Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. -Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. -Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. -Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. - -Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. -Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. -Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. -Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. -Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. -Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. -Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. -Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. -Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. -Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. -Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. -Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. -Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. -Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. -Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. -Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. -Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. -Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. -Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. -Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. -Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. -Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. -Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. -Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. -Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. -Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. -Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. -Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. -Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. -Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. -Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. -Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. -Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. -Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. -Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. -Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. -Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +Package: textcomp 2020/02/02 v2.0n Standard LaTeX package ) (/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty -Package: titlesec 2016/03/21 v2.10.2 Sectioning titles -\ttl@box=\box29 -\beforetitleunit=\skip62 -\aftertitleunit=\skip63 -\ttl@plus=\dimen115 -\ttl@minus=\dimen116 +Package: titlesec 2019/10/16 v2.13 Sectioning titles +\ttl@box=\box47 +\beforetitleunit=\skip68 +\aftertitleunit=\skip69 +\ttl@plus=\dimen147 +\ttl@minus=\dimen148 \ttl@toksa=\toks22 -\titlewidth=\dimen117 -\titlewidthlast=\dimen118 -\titlewidthfirst=\dimen119 +\titlewidth=\dimen149 +\titlewidthlast=\dimen150 +\titlewidthfirst=\dimen151 ) (/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty Package: tabulary 2014/06/11 v0.10 tabulary package (DPC) (/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty -Package: array 2018/12/30 v2.4k Tabular extension package (FMi) -\col@sep=\dimen120 -\ar@mcellbox=\box30 -\extrarowheight=\dimen121 +Package: array 2019/08/31 v2.4l Tabular extension package (FMi) +\col@sep=\dimen152 +\ar@mcellbox=\box48 +\extrarowheight=\dimen153 \NC@list=\toks23 -\extratabsurround=\skip64 -\backup@length=\skip65 -\ar@cellbox=\box31 +\extratabsurround=\skip70 +\backup@length=\skip71 +\ar@cellbox=\box49 ) -\TY@count=\count105 -\TY@linewidth=\dimen122 -\tymin=\dimen123 -\tymax=\dimen124 -\TY@tablewidth=\dimen125 +\TY@count=\count192 +\TY@linewidth=\dimen154 +\tymin=\dimen155 +\tymax=\dimen156 +\TY@tablewidth=\dimen157 ) (/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty -Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC)+ FMi change -\LTleft=\skip66 -\LTright=\skip67 -\LTpre=\skip68 -\LTpost=\skip69 -\LTchunksize=\count106 -\LTcapwidth=\dimen126 -\LT@head=\box32 -\LT@firsthead=\box33 -\LT@foot=\box34 -\LT@lastfoot=\box35 -\LT@cols=\count107 -\LT@rows=\count108 -\c@LT@tables=\count109 -\c@LT@chunks=\count110 +Package: longtable 2020/01/07 v4.13 Multi-page Table package (DPC) +\LTleft=\skip72 +\LTright=\skip73 +\LTpre=\skip74 +\LTpost=\skip75 +\LTchunksize=\count193 +\LTcapwidth=\dimen158 +\LT@head=\box50 +\LT@firsthead=\box51 +\LT@foot=\box52 +\LT@lastfoot=\box53 +\LT@cols=\count194 +\LT@rows=\count195 +\c@LT@tables=\count196 +\c@LT@chunks=\count197 \LT@p@ftn=\toks24 ) (/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages -\@vwid@box=\box36 -\sift@deathcycles=\count111 -\@vwid@loff=\dimen127 -\@vwid@roff=\dimen128 +\@vwid@box=\box54 +\sift@deathcycles=\count198 +\@vwid@loff=\dimen159 +\@vwid@roff=\dimen160 ) (./sphinxmulticell.sty Package: sphinxmulticell 2017/02/23 v1.6 better span rows and columns of a tabl e (Sphinx team) -\sphinx@TY@tablewidth=\dimen129 +\sphinx@TY@tablewidth=\dimen161 ) (/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty Package: makeidx 2014/09/29 v1.0m Standard LaTeX package ) (/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks -\OuterFrameSep=\skip70 -\fb@frw=\dimen130 -\fb@frh=\dimen131 -\FrameRule=\dimen132 -\FrameSep=\dimen133 +\OuterFrameSep=\skip76 +\fb@frw=\dimen162 +\fb@frh=\dimen163 +\FrameRule=\dimen164 +\FrameSep=\dimen165 ) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) @@ -440,34 +293,35 @@ Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. ) (/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty -Package: fancyvrb 2019/01/15 - -Style option: `fancyvrb' v3.2a <2019/01/15> (tvz) -\FV@CodeLineNo=\count112 -\FV@InFile=\read1 -\FV@TabBox=\box37 -\c@FancyVerbLine=\count113 -\FV@StepNumber=\count114 +Package: fancyvrb 2020/01/13 v3.5 verbatim text (tvz,hv) +\FV@CodeLineNo=\count199 +\FV@InFile=\read3 +\FV@TabBox=\box55 +\c@FancyVerbLine=\count266 +\FV@StepNumber=\count267 \FV@OutFile=\write3 -) (./footnotehyper-sphinx.sty -Package: footnotehyper-sphinx 2017/10/27 v1.7 hyperref aware footnote.sty for s -phinx (JFB) -\FNH@notes=\box38 -\FNH@width=\dimen134 -) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty +) +(./footnotehyper-sphinx.sty +Package: footnotehyper-sphinx 2021/02/04 v1.1d hyperref aware footnote.sty for +sphinx (JFB) +\FNH@notes=\box56 +\FNH@toks=\toks25 +\FNH@width=\dimen166 +) +(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty Package: float 2001/11/08 v1.3d Float enhancements (AL) -\c@float@type=\count115 -\float@exts=\toks25 -\float@box=\box39 -\@float@everytoks=\toks26 -\@floatcapt=\box40 +\c@float@type=\count268 +\float@exts=\toks26 +\float@box=\box57 +\@float@everytoks=\toks27 +\@floatcapt=\box58 ) (/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty -\wrapoverhang=\dimen135 -\WF@size=\dimen136 -\c@WF@wrappedlines=\count116 -\WF@box=\box41 -\WF@everypar=\toks27 +\wrapoverhang=\dimen167 +\WF@size=\dimen168 +\c@WF@wrappedlines=\count269 +\WF@box=\box59 +\WF@everypar=\toks28 Package: wrapfig 2003/01/31 v 3.6 ) (/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty @@ -490,178 +344,246 @@ Package: capt-of 2009/12/29 v0.2 standard captions outside of floats (/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty Package: needspace 2010/09/12 v1.3d reserve vertical space ) +(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty +Package: multicol 2019/12/09 v1.8y multicolumn formatting (FMi) +\c@tracingmulticols=\count270 +\mult@box=\box60 +\multicol@leftmargin=\dimen169 +\c@unbalance=\count271 +\c@collectmore=\count272 +\doublecol@number=\count273 +\multicoltolerance=\count274 +\multicolpretolerance=\count275 +\full@width=\dimen170 +\page@free=\dimen171 +\premulticols=\dimen172 +\postmulticols=\dimen173 +\multicolsep=\skip77 +\multicolbaselineskip=\skip78 +\partial@page=\box61 +\last@line=\box62 +\maxbalancingoverflow=\dimen174 +\mult@rightbox=\box63 +\mult@grightbox=\box64 +\mult@gfirstbox=\box65 +\mult@firstbox=\box66 +\@tempa=\box67 +\@tempa=\box68 +\@tempa=\box69 +\@tempa=\box70 +\@tempa=\box71 +\@tempa=\box72 +\@tempa=\box73 +\@tempa=\box74 +\@tempa=\box75 +\@tempa=\box76 +\@tempa=\box77 +\@tempa=\box78 +\@tempa=\box79 +\@tempa=\box80 +\@tempa=\box81 +\@tempa=\box82 +\@tempa=\box83 +\@tempa=\box84 +\@tempa=\box85 +\@tempa=\box86 +\@tempa=\box87 +\@tempa=\box88 +\@tempa=\box89 +\@tempa=\box90 +\@tempa=\box91 +\@tempa=\box92 +\@tempa=\box93 +\@tempa=\box94 +\@tempa=\box95 +\@tempa=\box96 +\@tempa=\box97 +\@tempa=\box98 +\@tempa=\box99 +\@tempa=\box100 +\@tempa=\box101 +\@tempa=\box102 +\@tempa=\box103 +\c@minrows=\count276 +\c@columnbadness=\count277 +\c@finalcolumnbadness=\count278 +\last@try=\dimen175 +\multicolovershoot=\dimen176 +\multicolundershoot=\dimen177 +\mult@nat@firstbox=\box104 +\colbreak@box=\box105 +\mc@col@check@num=\count279 +) (./sphinxhighlight.sty Package: sphinxhighlight 2016/05/29 stylesheet for highlighting with pygments ) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -)))) -\sphinxverbatimsep=\dimen137 -\sphinxverbatimborder=\dimen138 -\sphinxshadowsep=\dimen139 -\sphinxshadowsize=\dimen140 -\sphinxshadowrule=\dimen141 -\spx@notice@border=\dimen142 -\spx@image@maxheight=\dimen143 -\spx@image@box=\dimen144 -\c@literalblock=\count117 -\sphinxcontinuationbox=\box42 -\sphinxvisiblespacebox=\box43 -\sphinxVerbatim@TitleBox=\box44 -\py@argswidth=\skip71 -\lineblockindentation=\skip72 -\DUlineblockindent=\skip73 +(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +)) +\sphinxverbatimsep=\dimen178 +\sphinxverbatimborder=\dimen179 +\sphinxshadowsep=\dimen180 +\sphinxshadowsize=\dimen181 +\sphinxshadowrule=\dimen182 +\spx@notice@border=\dimen183 +\spx@image@maxheight=\dimen184 +\spx@image@box=\box106 +\c@sphinxscope=\count280 +\c@sphinxexplicit=\count281 +\sphinxcontinuationbox=\box107 +\sphinxvisiblespacebox=\box108 +\sphinxVerbatim@TitleBox=\box109 +\sphinxVerbatim@ContentsBox=\box110 +\spx@scratchbox=\box111 +\py@argswidth=\skip79 +\lineblockindentation=\skip80 +\DUlineblockindent=\skip81 ) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2018/04/16 v5.8 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2018/09/07 v3.3 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count118 -\Gm@cntv=\count119 -\c@Gm@tempcnt=\count120 -\Gm@bindingoffset=\dimen145 -\Gm@wd@mp=\dimen146 -\Gm@odd@mp=\dimen147 -\Gm@even@mp=\dimen148 -\Gm@layoutwidth=\dimen149 -\Gm@layoutheight=\dimen150 -\Gm@layouthoffset=\dimen151 -\Gm@layoutvoffset=\dimen152 -\Gm@dimlist=\toks28 +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2019/11/07 v1.0c TeX engine tests +)) +\Gm@cnth=\count282 +\Gm@cntv=\count283 +\c@Gm@tempcnt=\count284 +\Gm@bindingoffset=\dimen185 +\Gm@wd@mp=\dimen186 +\Gm@odd@mp=\dimen187 +\Gm@even@mp=\dimen188 +\Gm@layoutwidth=\dimen189 +\Gm@layoutheight=\dimen190 +\Gm@layouthoffset=\dimen191 +\Gm@layoutvoffset=\dimen192 +\Gm@dimlist=\toks29 ) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -Package: hyperref 2018/11/30 v6.88e Hypertext links for LaTeX - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO) - - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO) -Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO) -Package hobsub Info: Skipping package `infwarerr' (already loaded). -Package hobsub Info: Skipping package `ltxcmds' (already loaded). -Package hobsub Info: Skipping package `ifluatex' (already loaded). -Package hobsub Info: Skipping package `ifvtex' (already loaded). -Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO) -Package hobsub Info: Skipping package `ifpdf' (already loaded). -Package hobsub Info: Skipping package `etexcmds' (already loaded). -Package hobsub Info: Skipping package `kvsetkeys' (already loaded). -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) -Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. +Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) Package pdftexcmds Info: \pdf@primitive is available. Package pdftexcmds Info: \pdf@ifprimitive is available. Package pdftexcmds Info: \pdfdraftmode found. -Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) -Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO ) -Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO) -Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO) +(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) ) -Package hobsub Info: Skipping package `hobsub' (already loaded). -Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO) -Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO) -Package: xcolor-patch 2016/05/16 xcolor patch -Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO) -Package atveryend Info: \enddocument detected (standard20110627). -Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO) -Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO) -Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO) +(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) ) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty -Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO) +(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) ) -\@linkdim=\dimen153 -\Hy@linkcounter=\count121 -\Hy@pagecounter=\count122 +\@linkdim=\dimen193 +\Hy@linkcounter=\count285 +\Hy@pagecounter=\count286 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def -File: pd1enc.def 2018/11/30 v6.88e Hyperref: PDFDocEncoding definition (HO) +File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO) Now handling font encoding PD1 ... ... no UTF-8 mapping file for font encoding PD1 ) -\Hy@SavedSpaceFactor=\count123 - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg -File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) ) -Package hyperref Info: Option `unicode' set `true' on input line 4393. +\Hy@SavedSpaceFactor=\count287 +\pdfmajorversion=\count288 +Package hyperref Info: Option `unicode' set `true' on input line 4421. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def -File: puenc.def 2018/11/30 v6.88e Hyperref: PDF Unicode definition (HO) +File: puenc.def 2020/01/14 v7.00d Hyperref: PDF Unicode definition (HO) Now handling font encoding PU ... ... no UTF-8 mapping file for font encoding PU ) -Package hyperref Info: Option `colorlinks' set `true' on input line 4393. -Package hyperref Info: Option `breaklinks' set `true' on input line 4393. -Package hyperref Info: Hyper figures OFF on input line 4519. -Package hyperref Info: Link nesting OFF on input line 4524. -Package hyperref Info: Hyper index ON on input line 4527. -Package hyperref Info: Plain pages OFF on input line 4534. -Package hyperref Info: Backreferencing OFF on input line 4539. +Package hyperref Info: Option `colorlinks' set `true' on input line 4421. +Package hyperref Info: Option `breaklinks' set `true' on input line 4421. +Package hyperref Info: Hyper figures OFF on input line 4547. +Package hyperref Info: Link nesting OFF on input line 4552. +Package hyperref Info: Hyper index ON on input line 4555. +Package hyperref Info: Plain pages OFF on input line 4562. +Package hyperref Info: Backreferencing OFF on input line 4567. Package hyperref Info: Implicit mode ON; LaTeX internals redefined. -Package hyperref Info: Bookmarks ON on input line 4772. -\c@Hy@tempcnt=\count124 +Package hyperref Info: Bookmarks ON on input line 4800. +\c@Hy@tempcnt=\count289 (/usr/share/texlive/texmf-dist/tex/latex/url/url.sty -\Urlmuskip=\muskip11 +\Urlmuskip=\muskip17 Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. ) -LaTeX Info: Redefining \url on input line 5125. -\XeTeXLinkMargin=\dimen154 -\Fld@menulength=\count125 -\Field@Width=\dimen155 -\Fld@charsize=\dimen156 -Package hyperref Info: Hyper figures OFF on input line 6380. -Package hyperref Info: Link nesting OFF on input line 6385. -Package hyperref Info: Hyper index ON on input line 6388. -Package hyperref Info: backreferencing OFF on input line 6395. -Package hyperref Info: Link coloring ON on input line 6398. -Package hyperref Info: Link coloring with OCG OFF on input line 6405. -Package hyperref Info: PDF/A mode OFF on input line 6410. -LaTeX Info: Redefining \ref on input line 6450. -LaTeX Info: Redefining \pageref on input line 6454. -\Hy@abspage=\count126 -\c@Item=\count127 -\c@Hfootnote=\count128 +LaTeX Info: Redefining \url on input line 5159. +\XeTeXLinkMargin=\dimen194 + +(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count290 +\Field@Width=\dimen195 +\Fld@charsize=\dimen196 +Package hyperref Info: Hyper figures OFF on input line 6430. +Package hyperref Info: Link nesting OFF on input line 6435. +Package hyperref Info: Hyper index ON on input line 6438. +Package hyperref Info: backreferencing OFF on input line 6445. +Package hyperref Info: Link coloring ON on input line 6448. +Package hyperref Info: Link coloring with OCG OFF on input line 6455. +Package hyperref Info: PDF/A mode OFF on input line 6460. +LaTeX Info: Redefining \ref on input line 6500. +LaTeX Info: Redefining \pageref on input line 6504. + +(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) +) +\Hy@abspage=\count291 +\c@Item=\count292 +\c@Hfootnote=\count293 ) Package hyperref Info: Driver (autodetected): hpdftex. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def -File: hpdftex.def 2018/11/30 v6.88e Hyperref driver for pdfTeX -\Fld@listcount=\count129 -\c@bookmark@seq@number=\count130 +File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty -Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO) +(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +) +\Fld@listcount=\count294 +\c@bookmark@seq@number=\count295 + +(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 -82. +86. ) -\Hy@SectionHShift=\skip74 +\Hy@SectionHShift=\skip82 ) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty Package: hypcap 2016/05/16 v1.12 Adjusting the anchors of captions (HO) @@ -674,66 +596,61 @@ Package: sphinxmessages 2019/01/04 v2.0 Localized LaTeX macros (Sphinx team) Writing index file pytexexam.idx +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count296 +\l__pdf_internal_box=\box112 +) (./pytexexam.aux) \openout1 = `pytexexam.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 81. -LaTeX Font Info: Try loading font information for TS1+cmr on input line 81. - (/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd -File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 81. -LaTeX Font Info: ... okay on input line 81. -LaTeX Font Info: Try loading font information for T1+ptm on input line 81. - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 83. +LaTeX Font Info: ... okay on input line 83. +LaTeX Font Info: Trying to load font information for T1+ptm on input line 83 +. + (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd File: t1ptm.fd 2001/06/04 font definitions for T1/ptm. ) (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count131 -\scratchdimen=\dimen157 -\scratchbox=\box45 -\nofMPsegments=\count132 -\nofMParguments=\count133 -\everyMPshowfont=\toks29 -\MPscratchCnt=\count134 -\MPscratchDim=\dimen158 -\MPnumerator=\count135 -\makeMPintoPDFobject=\count136 -\everyMPtoPDFconversion=\toks30 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) -) +\scratchcounter=\count297 +\scratchdimen=\dimen197 +\scratchbox=\box113 +\nofMPsegments=\count298 +\nofMParguments=\count299 +\everyMPshowfont=\toks30 +\MPscratchCnt=\count300 +\MPscratchDim=\dimen198 +\MPnumerator=\count301 +\makeMPintoPDFobject=\count302 +\everyMPtoPDFconversion=\toks31 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. +85. (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e )) +\c@literalblock=\count303 + *geometry* driver: auto-detecting *geometry* detected driver: pdftex *geometry* verbose mode - [ preamble ] result: @@ -768,69 +685,56 @@ e * \@reversemarginfalse * (1in=72.27pt=25.4mm, 1cm=28.453pt) -\AtBeginShipoutBox=\box46 -Package hyperref Info: Link coloring ON on input line 81. +\AtBeginShipoutBox=\box114 +Package hyperref Info: Link coloring ON on input line 83. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section +Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty -Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) +(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) ) -\c@section@level=\count137 +\c@section@level=\count304 ) -LaTeX Info: Redefining \ref on input line 81. -LaTeX Info: Redefining \pageref on input line 81. -LaTeX Info: Redefining \nameref on input line 81. +LaTeX Info: Redefining \ref on input line 83. +LaTeX Info: Redefining \pageref on input line 83. +LaTeX Info: Redefining \nameref on input line 83. (./pytexexam.out) (./pytexexam.out) \@outlinefile=\write5 \openout5 = `pytexexam.out'. -Package hyperref Info: Option `pageanchor' set `false' on input line 84. -LaTeX Font Info: Try loading font information for T1+phv on input line 84. +Package hyperref Info: Option `pageanchor' set `false' on input line 86. +LaTeX Font Info: Trying to load font information for T1+phv on input line 86 +. (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv. ) -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <10> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 84. -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <24.88> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 84. -LaTeX Font Info: Font shape `T1/phv/bx/it' in size <10> not available -(Font) Font shape `T1/phv/b/it' tried instead on input line 84. LaTeX Font Info: Font shape `T1/phv/b/it' in size <10> not available -(Font) Font shape `T1/phv/b/sl' tried instead on input line 84. -LaTeX Font Info: Font shape `T1/phv/bx/it' in size <17.28> not available -(Font) Font shape `T1/phv/b/it' tried instead on input line 84. +(Font) Font shape `T1/phv/b/sl' tried instead on input line 86. LaTeX Font Info: Font shape `T1/phv/b/it' in size <17.28> not available -(Font) Font shape `T1/phv/b/sl' tried instead on input line 84. -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <17.28> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 84. +(Font) Font shape `T1/phv/b/sl' tried instead on input line 86. <><><><> -LaTeX Font Info: Try loading font information for U+msa on input line 84. +LaTeX Font Info: Trying to load font information for U+msa on input line 86. + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Try loading font information for U+msb on input line 84. +LaTeX Font Info: Trying to load font information for U+msb on input line 86. + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <12> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 84. - [1 +) [1 {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2 -] -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 86. - (./pytexexam.toc -LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available -(Font) Font shape `T1/ptm/b/n' tried instead on input line 2. -) +] (./pytexexam.toc) \tf@toc=\write6 \openout6 = `pytexexam.toc'. @@ -840,165 +744,115 @@ LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available ] Chapter 1. -LaTeX Font Info: Try loading font information for T1+pcr on input line 96. +LaTeX Font Info: Trying to load font information for T1+pcr on input line 98 +. (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd File: t1pcr.fd 2001/06/04 font definitions for T1/pcr. -) -LaTeX Font Info: Font shape `T1/pcr/bx/n' in size <10> not available -(Font) Font shape `T1/pcr/b/n' tried instead on input line 96. -LaTeX Font Info: Try loading font information for TS1+ptm on input line 113. - - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd -File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm. ) [1 -] - -! Package inputenc Error: Unicode character ​ (U+200B) -(inputenc) not set up for use with LaTeX. - -See the inputenc package documentation for explanation. -Type H for immediate help. - ... - -l.258 ...ing the question. The possible values ​ - ​are 1, 2, 4 -? - -! Package inputenc Error: Unicode character ​ (U+200B) -(inputenc) not set up for use with LaTeX. - -See the inputenc package documentation for explanation. -Type H for immediate help. - ... - -l.258 ... the question. The possible values ​​ - are 1, 2, 4 -? -[2] [3] [4 - -] +] [2] Chapter 2. -[5] [6 +[3 -] [7 +] [4 +] [5 -] (./pytexexam.ind [8 - -] -Underfull \hbox (badness 10000) in paragraph at lines 8--10 -[]\T1/pcr/m/n/10 add_user_preamble() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- - [] +] (./pytexexam.ind [6 -Underfull \hbox (badness 10000) in paragraph at lines 10--11 +] +Underfull \hbox (badness 10000) in paragraph at lines 8--9 []\T1/pcr/m/n/10 ams_math_package() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 in mod-ule py-tex- [] -Underfull \hbox (badness 7595) in paragraph at lines 22--23 -[]\T1/pcr/m/n/10 exam_header \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex-exam.latexe -xam.LatexExam at- +Underfull \hbox (badness 10000) in paragraph at lines 10--11 +[]\T1/pcr/m/n/10 answer_column \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex-exam.ques +tion.Question at- [] -Underfull \hbox (badness 10000) in paragraph at lines 23--24 -[]\T1/pcr/m/n/10 exam_title \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex-exam.latexex -am.LatexExam at- +Underfull \hbox (badness 10000) in paragraph at lines 19--21 +[]\T1/pcr/m/n/10 get_latex_string() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- [] -Underfull \hbox (badness 10000) in paragraph at lines 24--26 -[]\T1/pcr/m/n/10 export_pdf_answer() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- +Underfull \hbox (badness 10000) in paragraph at lines 19--21 +\T1/ptm/m/it/10 exam.latexexam.LatexExamAnswer method\T1/ptm/m/n/10 ), [] -Underfull \hbox (badness 10000) in paragraph at lines 26--28 -[]\T1/pcr/m/n/10 export_pdf_exam() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- +Underfull \hbox (badness 10000) in paragraph at lines 21--23 +[]\T1/pcr/m/n/10 get_latex_string() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- [] -Underfull \hbox (badness 10000) in paragraph at lines 28--30 -[]\T1/pcr/m/n/10 export_pdf_solution() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- +Underfull \hbox (badness 10000) in paragraph at lines 21--23 +\T1/ptm/m/it/10 exam.latexexam.LatexExamPaper method\T1/ptm/m/n/10 ), [] -Underfull \hbox (badness 10000) in paragraph at lines 30--32 -[]\T1/pcr/m/n/10 export_tex_answer() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- +Underfull \hbox (badness 10000) in paragraph at lines 23--25 +[]\T1/pcr/m/n/10 get_latex_string() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- [] -Underfull \hbox (badness 10000) in paragraph at lines 32--34 -[]\T1/pcr/m/n/10 export_tex_exam() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- +Underfull \hbox (badness 10000) in paragraph at lines 23--25 +\T1/ptm/m/it/10 exam.latexexam.LatexExamSolution method\T1/ptm/m/n/10 ), [] -Underfull \hbox (badness 10000) in paragraph at lines 34--36 -[]\T1/pcr/m/n/10 export_tex_solution() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- +Underfull \hbox (badness 10000) in paragraph at lines 25--27 +[]\T1/pcr/m/n/10 get_true_answer_key() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- [] -Underfull \hbox (badness 10000) in paragraph at lines 39--40 -[]\T1/pcr/m/n/10 get_answer() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex-exam.quest -ion.Question - [] - +Underfull \hbox (badness 10000) in paragraph at lines 44--46 +[]\T1/pcr/m/n/10 print_question_latex() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- -Underfull \hbox (badness 10000) in paragraph at lines 40--42 -[]\T1/pcr/m/n/10 get_answer_column() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- [] -Underfull \hbox (badness 10000) in paragraph at lines 60--62 -[]\T1/pcr/m/n/10 question_theorem \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- - [] - +Underfull \hbox (badness 10000) in paragraph at lines 46--48 +[]\T1/pcr/m/n/10 print_solution_latex() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- -Underfull \hbox (badness 10000) in paragraph at lines 65--67 -[]\T1/pcr/m/n/10 set_answer_column() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- [] -Underfull \hbox (badness 10000) in paragraph at lines 67--68 +Underfull \hbox (badness 10000) in paragraph at lines 65--66 []\T1/pcr/m/n/10 shuffle_answer() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex-exam.q uestion.Question [] -Underfull \hbox (badness 10000) in paragraph at lines 68--69 +Underfull \hbox (badness 10000) in paragraph at lines 66--67 []\T1/pcr/m/n/10 shuffle_question() \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex-exam .exam.Exam [] - -Underfull \hbox (badness 10000) in paragraph at lines 70--72 -[]\T1/pcr/m/n/10 solution_theorem \T1/ptm/m/n/10 (\T1/ptm/m/it/10 py-tex- - [] - -[9 +[7 ]) -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 468. -Package atveryend Info: Empty hook `AfterLastShipout' on input line 468. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 292. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 292. (./pytexexam.aux) -Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 468. -Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 468. +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 292. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 292. Package rerunfilecheck Info: File `pytexexam.out' has not changed. -(rerunfilecheck) Checksum: 6A62B5A35D2DC34207F518C9B1B5DA50;514. -Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 468. +(rerunfilecheck) Checksum: FA7ED81A6029E6460152D0D572E04853;514. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 292. ) Here is how much of TeX's memory you used: - 13403 strings out of 493927 - 188206 string characters out of 6164105 - 285903 words of memory out of 5000000 - 16896 multiletter control sequences out of 15000+600000 - 43594 words of font info for 63 fonts, out of 8000000 for 9000 - 332 hyphenation exceptions out of 8191 - 37i,11n,45p,356b,532s stack positions out of 5000i,500n,10000p,200000b,80000s + 13614 strings out of 482671 + 193075 string characters out of 5955619 + 468197 words of memory out of 5000000 + 28424 multiletter control sequences out of 15000+600000 + 571978 words of font info for 72 fonts, out of 8000000 for 9000 + 265 hyphenation exceptions out of 8191 + 38i,11n,49p,593b,506s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on pytexexam.pdf (13 pages, 106012 bytes). +Output written on pytexexam.pdf (11 pages, 101239 bytes). PDF statistics: - 214 PDF objects out of 1000 (max. 8388607) - 183 compressed objects within 2 object streams - 53 named destinations out of 1000 (max. 500000) + 183 PDF objects out of 1000 (max. 8388607) + 154 compressed objects within 2 object streams + 39 named destinations out of 1000 (max. 500000) 53 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/docs/_build/latex/pytexexam.out b/docs/_build/latex/pytexexam.out index 8e8b0db..47a075b 100755 --- a/docs/_build/latex/pytexexam.out +++ b/docs/_build/latex/pytexexam.out @@ -1,4 +1,4 @@ \BOOKMARK [0][-]{chapter.1}{\376\377\000P\000y\000t\000e\000x\000e\000x\000a\000m\000\040\000m\000a\000i\000n\000\040\000c\000l\000a\000s\000s}{}% 1 \BOOKMARK [0][-]{chapter.2}{\376\377\000P\000y\000t\000e\000x\000e\000x\000a\000m\000\040\000u\000t\000i\000l\000\040\000c\000l\000a\000s\000s}{}% 2 -\BOOKMARK [0][-]{section*.38}{\376\377\000P\000y\000t\000h\000o\000n\000\040\000M\000o\000d\000u\000l\000e\000\040\000I\000n\000d\000e\000x}{}% 3 -\BOOKMARK [0][-]{section*.39}{\376\377\000I\000n\000d\000e\000x}{}% 4 +\BOOKMARK [0][-]{section*.26}{\376\377\000P\000y\000t\000h\000o\000n\000\040\000M\000o\000d\000u\000l\000e\000\040\000I\000n\000d\000e\000x}{}% 3 +\BOOKMARK [0][-]{section*.27}{\376\377\000I\000n\000d\000e\000x}{}% 4 diff --git a/docs/_build/latex/pytexexam.pdf b/docs/_build/latex/pytexexam.pdf index 98ea01ceb6f9bfe45c46719bc047a61ee8a118e2..a544dfab5a17c34274caecb7f057f49455a355d3 100755 GIT binary patch delta 81562 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%0D)x{}>o~;(#0GUydlA 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 diff --git a/docs/_build/latex/pytexexam.tex b/docs/_build/latex/pytexexam.tex index 0e5551a..f0897d4 100755 --- a/docs/_build/latex/pytexexam.tex +++ b/docs/_build/latex/pytexexam.tex @@ -58,12 +58,14 @@ \fvset{fontsize=\small} \usepackage{geometry} + % Include hyperref last. \usepackage{hyperref} % Fix anchor placement for figures with captions. \usepackage{hypcap}% it must be loaded after hyperref. % Set up styles of URL: it should be placed after hyperref. \urlstyle{same} + \addto\captionsenglish{\renewcommand{\contentsname}{Contents:}} \usepackage{sphinxmessages} @@ -72,7 +74,7 @@ \title{pytexexam} -\date{Jan 08, 2020} +\date{Mar 17, 2021} \release{1.3} \author{Vu Ngoc Binh} \newcommand{\sphinxlogo}{\vbox{}} @@ -93,205 +95,104 @@ \chapter{Pytexexam main class} \label{\detokenize{index:pytexexam-main-class}}\index{Answer (class in pytexexam.answer)@\spxentry{Answer}\spxextra{class in pytexexam.answer}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.answer.Answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.answer.}}\sphinxbfcode{\sphinxupquote{Answer}}}{\emph{answer: str = ''}, \emph{is\_true\_answer=False}}{} -This class is used to store 1 answer in a exam question. +\phantomsection\label{\detokenize{index:pytexexam.answer.Answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.answer.}}\sphinxbfcode{\sphinxupquote{Answer}}}{\emph{\DUrole{n}{answer\_key}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{answer}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{is\_true\_answer}\DUrole{o}{=}\DUrole{default_value}{False}}}{} +\sphinxAtStartPar +This class is used to store 1 answer in a question. \end{fulllineitems} -\phantomsection\label{\detokenize{index:module-pytexexam.question}}\index{pytexexam.question (module)@\spxentry{pytexexam.question}\spxextra{module}}\index{Question (class in pytexexam.question)@\spxentry{Question}\spxextra{class in pytexexam.question}} +\phantomsection\label{\detokenize{index:module-pytexexam.question}}\index{module@\spxentry{module}!pytexexam.question@\spxentry{pytexexam.question}}\index{pytexexam.question@\spxentry{pytexexam.question}!module@\spxentry{module}}\index{Question (class in pytexexam.question)@\spxentry{Question}\spxextra{class in pytexexam.question}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.question.}}\sphinxbfcode{\sphinxupquote{Question}}}{\emph{question: str}}{} +\phantomsection\label{\detokenize{index:pytexexam.question.Question}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.question.}}\sphinxbfcode{\sphinxupquote{Question}}}{\emph{\DUrole{n}{question}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{answers}\DUrole{p}{:} \DUrole{n}{List\DUrole{p}{{[}}str\DUrole{p}{{]}}}}, \emph{\DUrole{n}{true\_answer}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{solution}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{answer\_column}\DUrole{p}{:} \DUrole{n}{int}}}{} +\sphinxAtStartPar This class represents one question on the test. -\index{answer\_a() (pytexexam.question.Question method)@\spxentry{answer\_a()}\spxextra{pytexexam.question.Question method}} +\index{answer\_column (pytexexam.question.Question attribute)@\spxentry{answer\_column}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_a}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_a}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer A for the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer A - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True. otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_column}}\pysigline{\sphinxbfcode{\sphinxupquote{answer\_column}}} +\sphinxAtStartPar +Number of columns for which the answer will be presented. \end{fulllineitems} -\index{answer\_b() (pytexexam.question.Question method)@\spxentry{answer\_b()}\spxextra{pytexexam.question.Question method}} +\index{answers (pytexexam.question.Question attribute)@\spxentry{answers}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_b}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_b}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer B to the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer B - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True, otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.answers}}\pysigline{\sphinxbfcode{\sphinxupquote{answers}}\sphinxbfcode{\sphinxupquote{: List\DUrole{p}{{[}}answer.Answer\DUrole{p}{{]}}}}} +\sphinxAtStartPar +Question answers \end{fulllineitems} -\index{answer\_c() (pytexexam.question.Question method)@\spxentry{answer\_c()}\spxextra{pytexexam.question.Question method}} +\index{get\_true\_answer\_key() (pytexexam.question.Question method)@\spxentry{get\_true\_answer\_key()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_c}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_c}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer C to the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer C - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True, otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_true_answer_key}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_true\_answer\_key}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Get answer key of true answer \end{fulllineitems} -\index{answer\_d() (pytexexam.question.Question method)@\spxentry{answer\_d()}\spxextra{pytexexam.question.Question method}} +\index{print\_question\_latex() (pytexexam.question.Question method)@\spxentry{print\_question\_latex()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_d}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_d}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer D for the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer D - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True, otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.print_question_latex}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{print\_question\_latex}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +generate latex code for this question \end{fulllineitems} -\index{answers() (pytexexam.question.Question method)@\spxentry{answers()}\spxextra{pytexexam.question.Question method}} +\index{print\_solution\_latex() (pytexexam.question.Question method)@\spxentry{print\_solution\_latex()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answers}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answers}}}{\emph{true\_answer: str, answer\_dict: Dict{[}str, str{]}}}{} -Another way to enter answers to questions. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} The letter that corresponds to the correct answer (A, B, C, D) - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer\_dict}} \textendash{} A dictionary contains the answers to the questions. The corresponding key of this dictionary is A, B, C, D. - -\end{itemize} - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{get\_answer() (pytexexam.question.Question method)@\spxentry{get\_answer()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_answer}}}{\emph{answer\_key: str}}{{ $\rightarrow$ str}} -This method is used to get answers to questions. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{answer\_key}} \textendash{} The key corresponding to the answer of the question. - -\item[{Returns}] \leavevmode -The answer corresponds to the selected answer. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{get\_answer\_column() (pytexexam.question.Question method)@\spxentry{get\_answer\_column()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_answer_column}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_answer\_column}}}{}{{ $\rightarrow$ int}} -This method returns the number of columns where the answer will be presented when the -question is printed. The function can return 1, 2, 4. -\begin{quote}\begin{description} -\item[{Returns}] \leavevmode -The number of columns the answer will be displayed when the question is printed - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{get\_true\_answer() (pytexexam.question.Question method)@\spxentry{get\_true\_answer()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_true_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_true\_answer}}}{}{{ $\rightarrow$ str}} -This method returns the character corresponding to the correct answer of the question. -The possible answer are A, B, C, D. -\begin{quote}\begin{description} -\item[{Returns}] \leavevmode -The letter corresponding to the correct answer of the question - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.print_solution_latex}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{print\_solution\_latex}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code to print question and solution \end{fulllineitems} \index{question (pytexexam.question.Question attribute)@\spxentry{question}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.question}}\pysigline{\sphinxbfcode{\sphinxupquote{question}}\sphinxbfcode{\sphinxupquote{ = None}}} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.question}}\pysigline{\sphinxbfcode{\sphinxupquote{question}}\sphinxbfcode{\sphinxupquote{: str}}} +\sphinxAtStartPar Content of the question. \end{fulllineitems} -\index{set\_answer\_column() (pytexexam.question.Question method)@\spxentry{set\_answer\_column()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.set_answer_column}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{set\_answer\_column}}}{\emph{answer\_column: int}}{} -This method allows you to enter the number of columns where the answer will be displayed -when printing the question. The possible values ​​are 1, 2, 4 -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{answer\_column}} \textendash{} The number of columns the answer will be displayed when printed. - -\end{description}\end{quote} - -\end{fulllineitems} - \index{shuffle\_answer() (pytexexam.question.Question method)@\spxentry{shuffle\_answer()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} \phantomsection\label{\detokenize{index:pytexexam.question.Question.shuffle_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{shuffle\_answer}}}{}{} -The method that allows the swap answers in question. +\sphinxAtStartPar +Shuffle answer list \end{fulllineitems} -\index{solution() (pytexexam.question.Question method)@\spxentry{solution()}\spxextra{pytexexam.question.Question method}} +\index{solution (pytexexam.question.Question attribute)@\spxentry{solution}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.solution}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{solution}}}{\emph{solution: str}}{} -This method is used to enter detailed answer to the question +\phantomsection\label{\detokenize{index:pytexexam.question.Question.solution}}\pysigline{\sphinxbfcode{\sphinxupquote{solution}}} +\sphinxAtStartPar +Solution of the question \end{fulllineitems} \end{fulllineitems} -\phantomsection\label{\detokenize{index:module-pytexexam.exam}}\index{pytexexam.exam (module)@\spxentry{pytexexam.exam}\spxextra{module}}\index{Exam (class in pytexexam.exam)@\spxentry{Exam}\spxextra{class in pytexexam.exam}} +\phantomsection\label{\detokenize{index:module-pytexexam.exam}}\index{module@\spxentry{module}!pytexexam.exam@\spxentry{pytexexam.exam}}\index{pytexexam.exam@\spxentry{pytexexam.exam}!module@\spxentry{module}}\index{Exam (class in pytexexam.exam)@\spxentry{Exam}\spxextra{class in pytexexam.exam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.exam.Exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.exam.}}\sphinxbfcode{\sphinxupquote{Exam}}}{\emph{question\_list: List{[}question.Question{]}}}{} +\phantomsection\label{\detokenize{index:pytexexam.exam.Exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.exam.}}\sphinxbfcode{\sphinxupquote{Exam}}}{\emph{\DUrole{n}{question\_list}\DUrole{p}{:} \DUrole{n}{List\DUrole{p}{{[}}question.Question\DUrole{p}{{]}}}}}{} +\sphinxAtStartPar This class represents an exam. \index{question\_list (pytexexam.exam.Exam attribute)@\spxentry{question\_list}\spxextra{pytexexam.exam.Exam attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.exam.Exam.question_list}}\pysigline{\sphinxbfcode{\sphinxupquote{question\_list}}\sphinxbfcode{\sphinxupquote{ = None}}} +\phantomsection\label{\detokenize{index:pytexexam.exam.Exam.question_list}}\pysigline{\sphinxbfcode{\sphinxupquote{question\_list}}} +\sphinxAtStartPar List of questions in the exam \end{fulllineitems} @@ -300,6 +201,7 @@ \chapter{Pytexexam main class} \begin{fulllineitems} \phantomsection\label{\detokenize{index:pytexexam.exam.Exam.shuffle_question}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{shuffle\_question}}}{}{} +\sphinxAtStartPar This method allows to shuffle all the questions in the exam. \end{fulllineitems} @@ -307,133 +209,54 @@ \chapter{Pytexexam main class} \end{fulllineitems} -\phantomsection\label{\detokenize{index:module-pytexexam.latexexam}}\index{pytexexam.latexexam (module)@\spxentry{pytexexam.latexexam}\spxextra{module}}\index{LatexExam (class in pytexexam.latexexam)@\spxentry{LatexExam}\spxextra{class in pytexexam.latexexam}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExam}}}{\emph{exam\_title: str}, \emph{exam: exam.Exam}}{} -This class represents a exam, allowing users to print the exam and answer to a tex file -or pdf (with latex pre-installed) -\index{add\_user\_preamble() (pytexexam.latexexam.LatexExam method)@\spxentry{add\_user\_preamble()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.add_user_preamble}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{add\_user\_preamble}}}{\emph{preamble: str}}{} -Added preamble of latex file - -\end{fulllineitems} - -\index{exam\_content (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_content}\spxextra{pytexexam.latexexam.LatexExam attribute}} +\phantomsection\label{\detokenize{index:module-pytexexam.latexexam}}\index{module@\spxentry{module}!pytexexam.latexexam@\spxentry{pytexexam.latexexam}}\index{pytexexam.latexexam@\spxentry{pytexexam.latexexam}!module@\spxentry{module}}\index{LatexExamAnswer (class in pytexexam.latexexam)@\spxentry{LatexExamAnswer}\spxextra{class in pytexexam.latexexam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.exam_content}}\pysigline{\sphinxbfcode{\sphinxupquote{exam\_content}}\sphinxbfcode{\sphinxupquote{ = None}}} -The content of the exam - -\end{fulllineitems} - -\index{exam\_header (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_header}\spxextra{pytexexam.latexexam.LatexExam attribute}} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamAnswer}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExamAnswer}}} +\sphinxAtStartPar +This class is used to create an answer keys +\index{get\_latex\_string() (pytexexam.latexexam.LatexExamAnswer method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamAnswer method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.exam_header}}\pysigline{\sphinxbfcode{\sphinxupquote{exam\_header}}\sphinxbfcode{\sphinxupquote{ = None}}} -The presentation of the exam’s header +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamAnswer.get_latex_string}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_latex\_string}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code \end{fulllineitems} -\index{exam\_title (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_title}\spxextra{pytexexam.latexexam.LatexExam attribute}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.exam_title}}\pysigline{\sphinxbfcode{\sphinxupquote{exam\_title}}\sphinxbfcode{\sphinxupquote{ = None}}} -Exam name \end{fulllineitems} -\index{export\_pdf\_answer() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}} +\index{LatexExamPaper (class in pytexexam.latexexam)@\spxentry{LatexExamPaper}\spxextra{class in pytexexam.latexexam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_pdf_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_pdf\_answer}}}{\emph{file\_name: str}}{} -This method export the answer as a tex file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{export\_pdf\_exam() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamPaper}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExamPaper}}} +\sphinxAtStartPar +This class is used to create an exam paper +\index{get\_latex\_string() (pytexexam.latexexam.LatexExamPaper method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamPaper method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_pdf_exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_pdf\_exam}}}{\emph{file\_name: str}}{} -This method export the exam as a pdf file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamPaper.get_latex_string}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_latex\_string}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code \end{fulllineitems} -\index{export\_pdf\_solution() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_pdf_solution}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_pdf\_solution}}}{\emph{file\_name: str}}{} -Export a file containing detailed answers for each question in the exam \end{fulllineitems} -\index{export\_tex\_answer() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}} +\index{LatexExamSolution (class in pytexexam.latexexam)@\spxentry{LatexExamSolution}\spxextra{class in pytexexam.latexexam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_tex_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_tex\_answer}}}{\emph{file\_name: str}}{} -This method export the answer as a tex file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{export\_tex\_exam() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_tex_exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_tex\_exam}}}{\emph{file\_name: str}}{} -This method proposed exam as a tex file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{export\_tex\_solution() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_tex_solution}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_tex\_solution}}}{\emph{file\_name: str}}{} -Export a file containing detailed answers for each question in the exam - -\end{fulllineitems} - -\index{question\_theorem (pytexexam.latexexam.LatexExam attribute)@\spxentry{question\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.question_theorem}}\pysigline{\sphinxbfcode{\sphinxupquote{question\_theorem}}\sphinxbfcode{\sphinxupquote{ = None}}} -The content of the beginning of each question will be printed - -\end{fulllineitems} - -\index{solution\_theorem (pytexexam.latexexam.LatexExam attribute)@\spxentry{solution\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.solution_theorem}}\pysigline{\sphinxbfcode{\sphinxupquote{solution\_theorem}}\sphinxbfcode{\sphinxupquote{ = None}}} -The content of the beginning of each detailed answer will be printed - -\end{fulllineitems} - -\index{user\_preamble (pytexexam.latexexam.LatexExam attribute)@\spxentry{user\_preamble}\spxextra{pytexexam.latexexam.LatexExam attribute}} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamSolution}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExamSolution}}} +\sphinxAtStartPar +Generate solution paper for this exam +\index{get\_latex\_string() (pytexexam.latexexam.LatexExamSolution method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamSolution method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.user_preamble}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_preamble}}\sphinxbfcode{\sphinxupquote{ = None}}} -Preamble of the latex file corresponds to the exam +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamSolution.get_latex_string}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_latex\_string}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code \end{fulllineitems} @@ -443,11 +266,12 @@ \chapter{Pytexexam main class} \chapter{Pytexexam util class} -\label{\detokenize{index:module-pytexexam.latexexamutil}}\label{\detokenize{index:pytexexam-util-class}}\index{pytexexam.latexexamutil (module)@\spxentry{pytexexam.latexexamutil}\spxextra{module}}\index{ams\_math\_package() (in module pytexexam.latexexamutil)@\spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}} +\label{\detokenize{index:module-pytexexam.latexexamutil}}\label{\detokenize{index:pytexexam-util-class}}\index{module@\spxentry{module}!pytexexam.latexexamutil@\spxentry{pytexexam.latexexamutil}}\index{pytexexam.latexexamutil@\spxentry{pytexexam.latexexamutil}!module@\spxentry{module}}\index{ams\_math\_package() (in module pytexexam.latexexamutil)@\spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}} \begin{fulllineitems} \phantomsection\label{\detokenize{index:pytexexam.latexexamutil.ams_math_package}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{pytexexam.latexexamutil.}}\sphinxbfcode{\sphinxupquote{ams\_math\_package}}}{}{{ $\rightarrow$ str}} -Returns the command lines needed to type math formula in latex +\sphinxAtStartPar +Returns the code needed to add in preamble to type math formula in latex \end{fulllineitems} diff --git a/docs/_build/latex/pytexexam.toc b/docs/_build/latex/pytexexam.toc index 580cc9d..1b9cfbd 100755 --- a/docs/_build/latex/pytexexam.toc +++ b/docs/_build/latex/pytexexam.toc @@ -1,5 +1,5 @@ \babel@toc {english}{} -\contentsline {chapter}{\numberline {1}Pytexexam main class}{1}{chapter.1}% -\contentsline {chapter}{\numberline {2}Pytexexam util class}{5}{chapter.2}% -\contentsline {chapter}{Python Module Index}{7}{section*.38}% -\contentsline {chapter}{Index}{9}{section*.39}% +\contentsline {chapter}{\numberline {1}Pytexexam main class}{1}{chapter.1}% +\contentsline {chapter}{\numberline {2}Pytexexam util class}{3}{chapter.2}% +\contentsline {chapter}{Python Module Index}{5}{section*.26}% +\contentsline {chapter}{Index}{7}{section*.27}% diff --git a/docs/_build/latex/sphinx.sty b/docs/_build/latex/sphinx.sty index c18e87a..e6c27c1 100755 --- a/docs/_build/latex/sphinx.sty +++ b/docs/_build/latex/sphinx.sty @@ -6,7 +6,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{sphinx}[2019/09/02 v2.2.1 LaTeX package (Sphinx markup)] +\ProvidesPackage{sphinx}[2021/01/23 v3.5.0 LaTeX package (Sphinx markup)] % provides \ltx@ifundefined % (many packages load ltxcmds: graphicx does for pdftex and lualatex but @@ -40,7 +40,7 @@ % for \text macro and \iffirstchoice@ conditional even if amsmath not loaded \RequirePackage{amstext} \RequirePackage{textcomp}% "warn" option issued from template -\RequirePackage{titlesec} +\RequirePackage[nobottomtitles*]{titlesec} \@ifpackagelater{titlesec}{2016/03/15}% {\@ifpackagelater{titlesec}{2016/03/21}% {}% @@ -119,7 +119,8 @@ {\dimexpr-\dp\strutbox -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}% +\sphinxbelowcaptionspace\relax}% -\def\sphinxatlongtableend{\prevdepth\z@\vskip\sphinxtablepost\relax}% +\def\sphinxatlongtableend{\@nobreakfalse % latex3/latex2e#173 + \prevdepth\z@\vskip\sphinxtablepost\relax}% % B. Table with tabular or tabulary \def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}% \let\sphinxattableend\sphinxatlongtableend @@ -238,6 +239,8 @@ \ltx@ifundefined{@removefromreset} {\RequirePackage{remreset}} {}% avoid warning +% To support hlist directive +\RequirePackage{multicol} % to make pdf with correct encoded bookmarks in Japanese % this should precede the hyperref package \ifx\kanjiskip\@undefined @@ -331,6 +334,9 @@ % verbatim \DeclareBoolOption[true]{verbatimwithframe} \DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[false]{verbatimforcewraps} +\DeclareStringOption[3]{verbatimmaxoverfull} +\DeclareStringOption[100]{verbatimmaxunderfull} \DeclareBoolOption[true]{verbatimhintsturnover} \DeclareBoolOption[true]{inlineliteralwraps} \DeclareStringOption[t]{literalblockcappos} @@ -409,6 +415,11 @@ \DisableKeyvalOption{sphinx}{numfigreset} \DisableKeyvalOption{sphinx}{nonumfigreset} \DisableKeyvalOption{sphinx}{mathnumfig} +% To allow hyphenation of first word in narrow contexts; no option, +% customization to be done via 'preamble' key +\newcommand*\sphinxAtStartPar{\leavevmode\nobreak\hskip\z@skip} +% No need for the \hspace{0pt} trick (\hskip\z@skip) with luatex +\ifdefined\directlua\let\sphinxAtStartPar\@empty\fi % user interface: options can be changed midway in a document! \newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}} @@ -587,12 +598,14 @@ {% classes with \chapter command \fancypagestyle{normal}{ \fancyhf{} - % FIXME: this presupposes "twoside". - % If "oneside" class option, there are warnings in LaTeX log. - \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} - \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} - \fancyhead[LE,RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \fancyhead[RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \if@twoside + \fancyfoot[LE]{{\py@HeaderFamily\thepage}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \fi \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt} % define chaptermark with \@chappos when \@chappos is available for Japanese @@ -604,7 +617,8 @@ % page of a chapter `clean.' \fancypagestyle{plain}{ \fancyhf{} - \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} + \if@twoside\fancyfoot[LE]{{\py@HeaderFamily\thepage}}\fi \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0.4pt} } @@ -705,17 +719,17 @@ % Augment the sectioning commands used to get our own font family in place, % and reset some internal data items (\titleformat from titlesec package) \titleformat{\section}{\Large\py@HeaderFamily}% - {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor} \titleformat{\subsection}{\large\py@HeaderFamily}% - {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor} \titleformat{\subsubsection}{\py@HeaderFamily}% - {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor} % By default paragraphs (and subsubsections) will not be numbered because % sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 \titleformat{\paragraph}{\py@HeaderFamily}% - {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor} \titleformat{\subparagraph}{\py@HeaderFamily}% - {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor} %% GRAPHICS @@ -733,7 +747,7 @@ \AtBeginDocument{\spx@image@maxheight\textheight} % box scratch register -\newdimen\spx@image@box +\newbox\spx@image@box \newcommand*{\sphinxsafeincludegraphics}[2][]{% % #1 contains possibly width=, height=, but no scale= since 1.8.4 \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% @@ -833,6 +847,28 @@ %% FOOTNOTES % +% Support scopes for footnote numbering +\newcounter{sphinxscope} +\newcommand{\sphinxstepscope}{\stepcounter{sphinxscope}} +% Explictly numbered footnotes may be referred to, and for this to be +% clickable we need to have only one target. So we will step this at each +% explicit footnote and let \thesphinxscope take it into account +\newcounter{sphinxexplicit} +\newcommand{\sphinxstepexplicit}{\stepcounter{sphinxexplicit}} +% Some babel/polyglossia languages fiddle with \@arabic, so let's be extra +% cautious and redefine \thesphinxscope with \number not \@arabic. +% Memo: we expect some subtle redefinition of \thesphinxscope to be a part of page +% scoping for footnotes, when we shall implement it. +\renewcommand{\thesphinxscope}{\number\value{sphinxscope}.\number\value{sphinxexplicit}} +\newcommand\sphinxthefootnotemark[2]{% + % this is used to make reference to an explicitly numbered footnote not on same page + % #1=label of footnote text, #2=page number where footnote text was printed + \ifdefined\pagename + \pagename\space#2, % <- space + \else + p. #2, % <- space + \fi #1% no space +} % Support large numbered footnotes in minipage % But now obsolete due to systematic use of \savenotes/\spewnotes % when minipages are in use in the various macro definitions next. @@ -840,6 +876,12 @@ %% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS + +% Everything is delayed to \begin{document} to allow hyperref patches into +% \newcounter to solve duplicate label problems for internal hyperlinks to +% code listings (literalblock counter). User or extension re-definitions of +% \theliteralblock, et al., thus have also to be delayed. (changed at 3.5.0) +\AtBeginDocument{% \ltx@ifundefined{c@chapter} {\newcounter{literalblock}}% {\newcounter{literalblock}[chapter]% @@ -885,7 +927,7 @@ \@addtoreset{literalblock}{section}% \ifspx@opt@mathnumfig \@addtoreset{equation}{section}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -895,7 +937,7 @@ \@addtoreset{literalblock}{subsection}% \ifspx@opt@mathnumfig \@addtoreset{equation}{subsection}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -905,7 +947,7 @@ \@addtoreset{literalblock}{subsubsection}% \ifspx@opt@mathnumfig \@addtoreset{equation}{subsubsection}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -915,7 +957,7 @@ \@addtoreset{literalblock}{paragraph}% \ifspx@opt@mathnumfig \@addtoreset{equation}{paragraph}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -925,7 +967,7 @@ \@addtoreset{literalblock}{subparagraph}% \ifspx@opt@mathnumfig \@addtoreset{equation}{subparagraph}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -942,7 +984,7 @@ \g@addto@macro\theequation{\arabic{equation}}% \fi \fi - +}% end of big \AtBeginDocument %% LITERAL BLOCKS % @@ -952,9 +994,9 @@ % - with possibly of a top caption, non-separable by pagebreak. % - and usable inside tables or footnotes ("footnotehyper-sphinx"). -% For extensions which use \OriginalVerbatim and compatibility with Sphinx < -% 1.5, we define and use these when (unmodified) Verbatim will be needed. But -% Sphinx >= 1.5 does not modify the \Verbatim macro anymore. +% Prior to Sphinx 1.5, \Verbatim and \endVerbatim were modified by Sphinx. +% The aliases defined here are used in sphinxVerbatim environment and can +% serve as hook-points with no need to modify \Verbatim itself. \let\OriginalVerbatim \Verbatim \let\endOriginalVerbatim\endVerbatim @@ -1053,7 +1095,7 @@ % Take advantage of the already applied Pygments mark-up to insert % potential linebreaks for TeX processing. % {, <, #, %, $, ' and ": go to next line. -% _, }, ^, &, >, - and ~: stay at end of broken line. +% _, }, ^, &, >, -, ~, and \: stay at end of broken line. % Use of \textquotesingle for straight quote. % FIXME: convert this to package options ? \newcommand*\sphinxbreaksbeforelist {% @@ -1065,6 +1107,7 @@ \newcommand*\sphinxbreaksafterlist {% \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &, \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~ + \do\PYGZbs\\% \ } \newcommand*\sphinxbreaksatspecials {% \def\do##1##2% @@ -1076,7 +1119,7 @@ } \def\sphinx@verbatim@nolig@list {\do \`}% -% Some characters . , ; ? ! / are not pygmentized. +% Some characters . , ; ? ! / are neither pygmentized nor "tex-escaped". % This macro makes them "active" and they will insert potential linebreaks. % Not compatible with math mode (cf \sphinxunactivateextras). \newcommand*\sphinxbreaksbeforeactivelist {}% none @@ -1109,6 +1152,9 @@ \newcommand*\sphinxVerbatimTitle {} % This box to typeset the caption before framed.sty multiple passes for framing. \newbox\sphinxVerbatim@TitleBox +% This box to measure contents if nested as inner \MakeFramed requires then +% minipage encapsulation but too long contents then break outer \MakeFramed +\newbox\sphinxVerbatim@ContentsBox % This is a workaround to a "feature" of French lists, when literal block % follows immediately; usable generally (does only \par then), a priori... \newcommand*\sphinxvspacefixafterfrenchlists{% @@ -1150,13 +1196,188 @@ % no need to restore \fboxsep here, as this ends up in a \hbox from fancyvrb }% % \sphinxVerbatimFormatLine will be set locally to one of those two: -\newcommand\sphinxVerbatimFormatLineWrap[1]{% - \hsize\linewidth +\newcommand\sphinxVerbatimFormatLineWrap{% + \hsize\linewidth + \ifspx@opt@verbatimforcewraps + \expandafter\spx@verb@FormatLineForceWrap + \else\expandafter\spx@verb@FormatLineWrap + \fi +}% +\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +\long\def\spx@verb@FormatLineWrap#1{% \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ \doublehyphendemerits\z@\finalhyphendemerits\z@ \strut #1\strut}% }% -\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +% +% The normal line wrapping allows breaks at spaces and ascii non +% letters, non digits. The \raggedright above means there will be +% an overfilled line only if some non-breakable "word" was +% encountered, which is longer than a line (it is moved always to +% be on its own on a new line). +% +% The "forced" line wrapping will parse the tokens to add potential +% breakpoints at each character. As some strings are highlighted, +% we have to apply the highlighting character per character, which +% requires to manipulate the output of the Pygments LaTeXFormatter. +% +% Doing this at latex level is complicated. The contents should +% be as expected: i.e. some active characters from +% \sphinxbreaksviaactive, some Pygments character escapes such as +% \PYGZdl{}, and the highlighting \PYG macro with always 2 +% arguments. No other macros should be there, except perhaps +% zero-parameter macros. In particular: +% - the texcomments Pygments option must be set to False +% +% With pdflatex, Unicode input gives multi-bytes characters +% where the first byte is active. We support the "utf8" macros +% only. "utf8x" is not supported. +% +% The highlighting macro \PYG will be applied character per +% character. Highlighting via a colored background gives thus a +% chain of small colored boxes which may cause some artefact in +% some pdf viewers. Can't do anything here if we do want the line +% break to be possible. +% +% First a measurement step is done of what would the standard line +% wrapping give (i.e line breaks only at spaces and non-letter, +% non-digit ascii characters), cf TeX by Topic for the basic +% dissecting technique: TeX unfortunately when building a vertical +% box does not store in an accessible way what was the maximal +% line-width during paragraph building. +% +% If the max width exceeds the linewidth by more than verbatimmaxoverfull +% character widths, or if the min width plus verbatimmaxunderfull character +% widths is inferior to linewidth, then we apply the "force wrapping" with +% potential line break at each character, else we don't. +\long\def\spx@verb@FormatLineForceWrap#1{% + % \spx@image@box is a scratch box register that we can use here + \global\let\spx@verb@maxwidth\z@ + \global\let\spx@verb@minwidth\linewidth + \setbox\spx@image@box + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ + \strut #1\strut\@@par + \spx@verb@getwidths}% + \ifdim\spx@verb@maxwidth> + \dimexpr\linewidth+\spx@opt@verbatimmaxoverfull\fontcharwd\font`X \relax + \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}% + \else + \ifdim\spx@verb@minwidth< + \dimexpr\linewidth-\spx@opt@verbatimmaxunderfull\fontcharwd\font`X \relax + \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}% + \else + \spx@verb@FormatLineWrap{#1}% + \fi\fi +}% +% auxiliary paragraph dissector to get max and min widths +\newbox\spx@scratchbox +\def\spx@verb@getwidths {% + \unskip\unpenalty + \setbox\spx@scratchbox\lastbox + \ifvoid\spx@scratchbox + \else + \setbox\spx@scratchbox\hbox{\unhbox\spx@scratchbox}% + \ifdim\spx@verb@maxwidth<\wd\spx@scratchbox + \xdef\spx@verb@maxwidth{\number\wd\spx@scratchbox sp}% + \fi + \ifdim\spx@verb@minwidth>\wd\spx@scratchbox + \xdef\spx@verb@minwidth{\number\wd\spx@scratchbox sp}% + \fi + \expandafter\spx@verb@getwidths + \fi +}% +% auxiliary macros to implement "cut long line even in middle of word" +\catcode`Z=3 % safe delimiter +\def\spx@verb@wrapPYG{% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@i +}% +\def\spx@verb@wrapPYG@i{% + \ifx\spx@nexttoken\spx@verb@wrapPYG\let\next=\@gobble\else + \ifx\spx@nexttoken\PYG\let\next=\spx@verb@wrapPYG@PYG@onebyone\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@ii + \fi\fi + \next +}% +% Let's recognize active characters. We don't support utf8x only utf8. +% And here #1 should not have picked up (non empty) braced contents +\long\def\spx@verb@wrapPYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@two\else + \let\next=\spx@verb@wrapPYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@one #1{#1\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@two #1#2{#1#2\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@three #1#2#3{#1#2#3\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@four #1#2#3#4{#1#2#3#4\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +% Replace \PYG by itself applied one character at a time! This way breakpoints +% can be inserted. +\def\spx@verb@wrapPYG@PYG@onebyone#1#2#3{% #1 = \PYG, #2 = highlight spec, #3 = tokens + \def\spx@verb@wrapPYG@PYG@spec{{#2}}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i#3Z% +}% +\def\spx@verb@wrapPYG@PYG@i{% + \ifx\spx@nexttokenZ\let\next=\spx@verb@wrapPYG@PYG@done\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@PYG@ii + \fi + \next +}% +\def\spx@verb@wrapPYG@PYG@doneZ{\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@PYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@PYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@PYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@PYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@PYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@PYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@PYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@PYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@PYG@two\else + \let\next=\spx@verb@wrapPYG@PYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@PYG@one#1{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@two#1#2{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@three#1#2#3{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@four#1#2#3#4{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3#4}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\catcode`Z 11 % +% \g@addto@macro\FV@SetupFont{% \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% @@ -1255,17 +1476,23 @@ \itemsep \z@skip \topsep \z@skip \partopsep \z@skip - % trivlist will set \parsep to \parskip = zero + % trivlist will set \parsep to \parskip (which itself is set to zero above) % \leftmargin will be set to zero by trivlist \rightmargin\z@ \parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten. \trivlist\item\relax - \ifsphinxverbatimwithminipage\spx@inframedtrue\fi - % use a minipage if we are already inside a framed environment - \ifspx@inframed\noindent\begin{minipage}{\linewidth}\fi - \MakeFramed {% adapted over from framed.sty's snugshade environment + \ifspx@inframed\setbox\sphinxVerbatim@ContentsBox\vbox\bgroup + \@setminipage\hsize\linewidth + % use bulk of minipage paragraph shape restores (this is needed + % in indented contexts, at least for some) + \textwidth\hsize \columnwidth\hsize \@totalleftmargin\z@ + \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip + \else + \ifsphinxverbatimwithminipage\noindent\begin{minipage}{\linewidth}\fi + \MakeFramed {% adapted over from framed.sty's snugshade environment \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage }% + \fi % For grid placement from \strut's in \FancyVerbFormatLine \lineskip\z@skip % active comma should not be overwritten by \@noligs @@ -1277,8 +1504,49 @@ } {% \endOriginalVerbatim - \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade - \ifspx@inframed\end{minipage}\fi + \ifspx@inframed + \egroup % finish \sphinxVerbatim@ContentsBox vbox + \nobreak % update page totals + \ifdim\dimexpr\ht\sphinxVerbatim@ContentsBox+ + \dp\sphinxVerbatim@ContentsBox+ + \ht\sphinxVerbatim@TitleBox+ + \dp\sphinxVerbatim@TitleBox+ + 2\fboxsep+2\fboxrule+ + % try to account for external frame parameters + \FrameSep+\FrameRule+ + % Usage here of 2 baseline distances is empirical. + % In border case where code-block fits barely in remaining space, + % it gets framed and looks good but the outer frame may continue + % on top of next page and give (if no contents after code-block) + % an empty framed line, as testing showed. + 2\baselineskip+ + % now add all to accumulated page totals and compare to \pagegoal + \pagetotal+\pagedepth>\pagegoal + % long contents: do not \MakeFramed. Do make a caption (either before or + % after) if title exists. Continuation hints across pagebreaks dropped. + % FIXME? a bottom caption may end up isolated at top of next page + % (no problem with a top caption, which is default) + \spx@opt@verbatimwithframefalse + \def\sphinxVerbatim@Title{\noindent\box\sphinxVerbatim@TitleBox\par}% + \sphinxVerbatim@Before + \noindent\unvbox\sphinxVerbatim@ContentsBox\par + \sphinxVerbatim@After + \else + % short enough contents: use \MakeFramed. As it is nested, this requires + % minipage encapsulation. + \noindent\begin{minipage}{\linewidth}% + \MakeFramed {% Use it now with the fetched contents + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \unvbox\sphinxVerbatim@ContentsBox + % some of this may be superfluous: + \par\unskip\@minipagefalse\endMakeFramed + \end{minipage}% + \fi + \else % non-nested \MakeFramed + \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade + \ifsphinxverbatimwithminipage\end{minipage}\fi + \fi \endtrivlist } \newenvironment {sphinxVerbatimNoFrame} @@ -1313,10 +1581,10 @@ {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &, \do\textgreater\>\do\textasciitilde\~% >, ~ + \do\textbackslash\\% \ } \newcommand*\sphinxbreaksviaactiveinparsedliteral{% \sphinxbreaksviaactive % by default handles . , ; ? ! / - \do\-% we need also the hyphen character (ends up "as is" in parsed-literal) \lccode`\~`\~ % % update \dospecials as it is used by \url % but deactivation will already have been done hence this is unneeded: @@ -1327,7 +1595,7 @@ \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~ } \newcommand*{\sphinxunactivateextras}{\let\do\@makeother - \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% + \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist}% % the \catcode13=5\relax (deactivate end of input lines) is left to callers \newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax \sphinxunactivateextras}% @@ -1355,7 +1623,8 @@ % \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref. \protected\def\sphinxhref#1#2{{% \sphinxunactivateextrasandspace % never do \scantokens with active space! - \endlinechar\m@ne\everyeof{{#2}}% keep catcode regime for #2 +% for the \endlinechar business, https://github.com/latex3/latex2e/issues/286 + \endlinechar\m@ne\everyeof{{\endlinechar13 #2}}% keep catcode regime for #2 \scantokens{\href{#1}}% normalise it for #1 during \href expansion }} % Same for \url. And also \nolinkurl for coherence. @@ -1735,17 +2004,37 @@ % to obtain straight quotes we execute \@noligs as patched by upquote, and % \scantokens is needed in cases where it would be too late for the macro to % first set catcodes and then fetch its argument. We also make the contents -% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive. +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive, +% and also at \ character (which is escaped to \textbackslash{}). +\protected\def\sphinxtextbackslashbreakbefore + {\discretionary{}{\sphinxafterbreak\sphinx@textbackslash}{\sphinx@textbackslash}} +\protected\def\sphinxtextbackslashbreakafter + {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}} +\let\sphinxtextbackslash\sphinxtextbackslashbreakafter % the macro must be protected if it ends up used in moving arguments, % in 'alltt' \@noligs is done already, and the \scantokens must be avoided. \protected\def\sphinxupquote#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else \ifspx@opt@inlineliteralwraps - \sphinxbreaksviaactive\let\sphinxafterbreak\empty + % break at . , ; ? ! / + \sphinxbreaksviaactive + % break also at \ + \let\sphinx@textbackslash\textbackslash + \let\textbackslash\sphinxtextbackslash + % by default, no continuation symbol on next line but may be added + \let\sphinxafterbreak\sphinxafterbreakofinlineliteral % do not overwrite the comma set-up \let\verbatim@nolig@list\sphinx@literal@nolig@list \fi % fix a space-gobbling issue due to LaTeX's original \do@noligs +% TODO: using \@noligs as patched by upquote.sty is now unneeded because +% either ` and ' are escaped (non-unicode engines) or they don't build +% ligatures (unicode engines). Thus remove this and unify handling of `, <, >, +% ' and - with the characters . , ; ? ! / as handled via +% \sphinxbreaksviaactive. +% Hence \sphinx@do@noligs will be removed, or rather replaced with code +% inserting discretionaries, as they allow a continuation symbol on start of +% next line to achieve common design with code-blocks. \let\do@noligs\sphinx@do@noligs \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref) \expandafter\scantokens @@ -1753,6 +2042,7 @@ \def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} \def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% +\let\sphinxafterbreakofinlineliteral\empty % Some custom font markup commands. \protected\def\sphinxstrong#1{\textbf{#1}} @@ -1763,6 +2053,7 @@ \protected\def\sphinxtitleref#1{\emph{#1}} \protected\def\sphinxmenuselection#1{\emph{#1}} \protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxkeyboard#1{\sphinxcode{#1}} \protected\def\sphinxaccelerator#1{\underline{#1}} \protected\def\sphinxcrossref#1{\emph{#1}} \protected\def\sphinxtermref#1{\emph{#1}} @@ -1775,8 +2066,8 @@ \def\sphinxstyleindexextra #1{ (\emph{#1})} \def\sphinxstyleindexpageref #1{, \pageref{#1}} \def\sphinxstyleindexpagemain#1{\textbf{#1}} -\protected\def\spxentry#1{#1}% will get \let to \sphinxstyleindexentry in index -\protected\def\spxextra#1{#1}% will get \let to \sphinxstyleindexextra in index +\def\spxentry{\@backslashchar spxentry}% let to \sphinxstyleindexentry in index +\def\spxextra{\@backslashchar spxextra}% let to \sphinxstyleindexextra in index \def\sphinxstyleindexlettergroup #1% {{\Large\sffamily#1}\nopagebreak\vspace{1mm}} \def\sphinxstyleindexlettergroupDefault #1% @@ -1800,6 +2091,7 @@ % reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds \AtBeginDocument{\pdfstringdefDisableCommands{% % all "protected" macros possibly ending up in section titles should be here +% TODO: examine if \sphinxhref, \sphinxurl, \sphinnolinkurl should be handled \let\sphinxstyleemphasis \@firstofone \let\sphinxstyleliteralemphasis \@firstofone \let\sphinxstylestrong \@firstofone @@ -1813,8 +2105,20 @@ \let\sphinxemail \@firstofone \let\sphinxcrossref \@firstofone \let\sphinxtermref \@firstofone + \let\sphinxhyphen\sphinxhyphenforbookmarks }} +% Special characters +% +% This definition prevents en-dash and em-dash TeX ligatures. +% +% It inserts a potential breakpoint after the hyphen. This is to keep in sync +% with behavior in code-blocks, parsed and inline literals. For a breakpoint +% before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother) +\protected\def\sphinxhyphen#1{-\kern\z@} +% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark +\def\sphinxhyphenforbookmarks{-} + % For curly braces inside \index macro \def\sphinxleftcurlybrace{\{} \def\sphinxrightcurlybrace{\}} diff --git a/docs/_build/latex/sphinx.xdy b/docs/_build/latex/sphinx.xdy index 1c0794c..edca178 100755 --- a/docs/_build/latex/sphinx.xdy +++ b/docs/_build/latex/sphinx.xdy @@ -112,12 +112,14 @@ (merge-rule "\_" "_" :string) (merge-rule "{[}" "[" :string) (merge-rule "{]}" "]" :string) -(merge-rule "{}`" "`" :string) (merge-rule "\textbackslash{}" "\" :string) ; " for Emacs syntax highlighting (merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here +(merge-rule "\textasciicircum{}" "^" :string) +(merge-rule "\sphinxhyphen{}" "-" :string) +(merge-rule "\textquotesingle{}" "'" :string) +(merge-rule "\textasciigrave{}" "`" :string) (merge-rule "\textless{}" "<" :string) (merge-rule "\textgreater{}" ">" :string) -(merge-rule "\textasciicircum{}" "^" :string) (merge-rule "\P{}" "¶" :string) (merge-rule "\S{}" "§" :string) (merge-rule "\texteuro{}" "€" :string) diff --git a/docs/_build/latex/sphinxcyrillic.sty b/docs/_build/latex/sphinxcyrillic.sty index 1a14c7b..6747b5e 100755 --- a/docs/_build/latex/sphinxcyrillic.sty +++ b/docs/_build/latex/sphinxcyrillic.sty @@ -11,11 +11,11 @@ \ProcessLocalKeyvalOptions* % ignore class options \ifspx@cyropt@Xtwo -% original code by tex.sx user egreg: +% original code by tex.sx user egreg (updated 2019/10/28): % https://tex.stackexchange.com/a/460325/ % 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding % This assumes inputenc loaded with utf8 option, or LaTeX release -% as recent as 2018/04/01 which does it automatically. +% as recent as 2018/04/01 which does it automatically. \@tfor\next:=% {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}% {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}% @@ -27,7 +27,9 @@ {Ӎ}{ӎ}{Ӕ}{ӕ}{Ә}{ә}{Ӡ}{ӡ}{Ө}{ө}\do {% \begingroup\def\IeC{\protect\DeclareTextSymbolDefault}% - \protected@edef\@temp{\endgroup\next{X2}}\@temp + \protected@edef\@temp{\endgroup + \@ifl@t@r{\fmtversion}{2019/10/01}{\csname u8:\next\endcsname}{\next}}% + \@temp{X2}% }% \else \ifspx@cyropt@TtwoA diff --git a/docs/_build/latex/sphinxhowto.cls b/docs/_build/latex/sphinxhowto.cls index ba5e003..0848a79 100755 --- a/docs/_build/latex/sphinxhowto.cls +++ b/docs/_build/latex/sphinxhowto.cls @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sphinxhowto}[2018/12/23 v2.0 Document class (Sphinx howto)] +\ProvidesClass{sphinxhowto}[2019/12/01 v2.3.0 Document class (Sphinx howto)] % 'oneside' option overriding the 'twoside' default \newif\if@oneside @@ -27,6 +27,17 @@ \setcounter{secnumdepth}{2} \setcounter{tocdepth}{2}% i.e. section and subsection +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% % Change the title page to look a bit better, and fit in with the fncychap % ``Bjarne'' style a bit better. % @@ -65,7 +76,7 @@ \endgroup \noindent\rule{\textwidth}{1pt}\par \vspace{12pt}% -} +} \newcommand\sphinxtableofcontentshook{} \pagenumbering{arabic} diff --git a/docs/_build/latex/sphinxmanual.cls b/docs/_build/latex/sphinxmanual.cls index e7c8f41..718189d 100755 --- a/docs/_build/latex/sphinxmanual.cls +++ b/docs/_build/latex/sphinxmanual.cls @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sphinxmanual}[2018/12/23 v2.0 Document class (Sphinx manual)] +\ProvidesClass{sphinxmanual}[2019/12/01 v2.3.0 Document class (Sphinx manual)] % chapters starting at odd pages (overridden by 'openany' document option) \PassOptionsToClass{openright}{\sphinxdocclass} @@ -30,6 +30,17 @@ \setcounter{secnumdepth}{2} \setcounter{tocdepth}{1} +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% % Change the title page to look a bit better, and fit in with the fncychap % ``Bjarne'' style a bit better. % diff --git a/docs/_build/latex/sphinxmessages.sty b/docs/_build/latex/sphinxmessages.sty index 121f0af..68ebffa 100755 --- a/docs/_build/latex/sphinxmessages.sty +++ b/docs/_build/latex/sphinxmessages.sty @@ -7,7 +7,7 @@ \renewcommand{\literalblockcontinuedname}{continued from previous page} \renewcommand{\literalblockcontinuesname}{continues on next page} -\renewcommand{\sphinxnonalphabeticalgroupname}{Non-alphabetical} +\renewcommand{\sphinxnonalphabeticalgroupname}{Non\sphinxhyphen{}alphabetical} \renewcommand{\sphinxsymbolsname}{Symbols} \renewcommand{\sphinxnumbersname}{Numbers} \def\pageautorefname{page} diff --git a/docs/_build/latex/sphinxmulticell.sty b/docs/_build/latex/sphinxmulticell.sty index f0d11b1..a645491 100755 --- a/docs/_build/latex/sphinxmulticell.sty +++ b/docs/_build/latex/sphinxmulticell.sty @@ -229,10 +229,10 @@ % whether or not the multirow is single-column or multi-column. % % In passing we obtain baseline alignements across rows (only if -% \arraylinestretch is 1, as LaTeX's does not obey \arraylinestretch in "p" +% \arraystretch is 1, as LaTeX's does not obey \arraystretch in "p" % multi-line contents, only first and last line...) % -% TODO: examine the situation with \arraylinestretch > 1. The \extrarowheight +% TODO: examine the situation with \arraystretch > 1. The \extrarowheight % is hopeless for multirow anyhow, it makes baseline alignment strictly % impossible. \newcommand\sphinxmultirow[2]{\begingroup diff --git a/docs/_build/latexmkjarc b/docs/_build/latexmkjarc index 5b315d6..6e36b19 100755 --- a/docs/_build/latexmkjarc +++ b/docs/_build/latexmkjarc @@ -1,4 +1,4 @@ -$latex = 'platex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; $dvipdf = 'dvipdfmx %O -o %D %S'; $makeindex = 'internal mendex %S %B %D'; sub mendex { @@ -19,4 +19,4 @@ sub mendex { add_cus_dep( "glo", "gls", 0, "makeglo" ); sub makeglo { return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); -} +} \ No newline at end of file diff --git a/docs/_build/pytexexam.tex b/docs/_build/pytexexam.tex index 0e5551a..f0897d4 100755 --- a/docs/_build/pytexexam.tex +++ b/docs/_build/pytexexam.tex @@ -58,12 +58,14 @@ \fvset{fontsize=\small} \usepackage{geometry} + % Include hyperref last. \usepackage{hyperref} % Fix anchor placement for figures with captions. \usepackage{hypcap}% it must be loaded after hyperref. % Set up styles of URL: it should be placed after hyperref. \urlstyle{same} + \addto\captionsenglish{\renewcommand{\contentsname}{Contents:}} \usepackage{sphinxmessages} @@ -72,7 +74,7 @@ \title{pytexexam} -\date{Jan 08, 2020} +\date{Mar 17, 2021} \release{1.3} \author{Vu Ngoc Binh} \newcommand{\sphinxlogo}{\vbox{}} @@ -93,205 +95,104 @@ \chapter{Pytexexam main class} \label{\detokenize{index:pytexexam-main-class}}\index{Answer (class in pytexexam.answer)@\spxentry{Answer}\spxextra{class in pytexexam.answer}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.answer.Answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.answer.}}\sphinxbfcode{\sphinxupquote{Answer}}}{\emph{answer: str = ''}, \emph{is\_true\_answer=False}}{} -This class is used to store 1 answer in a exam question. +\phantomsection\label{\detokenize{index:pytexexam.answer.Answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.answer.}}\sphinxbfcode{\sphinxupquote{Answer}}}{\emph{\DUrole{n}{answer\_key}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{answer}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{is\_true\_answer}\DUrole{o}{=}\DUrole{default_value}{False}}}{} +\sphinxAtStartPar +This class is used to store 1 answer in a question. \end{fulllineitems} -\phantomsection\label{\detokenize{index:module-pytexexam.question}}\index{pytexexam.question (module)@\spxentry{pytexexam.question}\spxextra{module}}\index{Question (class in pytexexam.question)@\spxentry{Question}\spxextra{class in pytexexam.question}} +\phantomsection\label{\detokenize{index:module-pytexexam.question}}\index{module@\spxentry{module}!pytexexam.question@\spxentry{pytexexam.question}}\index{pytexexam.question@\spxentry{pytexexam.question}!module@\spxentry{module}}\index{Question (class in pytexexam.question)@\spxentry{Question}\spxextra{class in pytexexam.question}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.question.}}\sphinxbfcode{\sphinxupquote{Question}}}{\emph{question: str}}{} +\phantomsection\label{\detokenize{index:pytexexam.question.Question}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.question.}}\sphinxbfcode{\sphinxupquote{Question}}}{\emph{\DUrole{n}{question}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{answers}\DUrole{p}{:} \DUrole{n}{List\DUrole{p}{{[}}str\DUrole{p}{{]}}}}, \emph{\DUrole{n}{true\_answer}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{solution}\DUrole{p}{:} \DUrole{n}{str}}, \emph{\DUrole{n}{answer\_column}\DUrole{p}{:} \DUrole{n}{int}}}{} +\sphinxAtStartPar This class represents one question on the test. -\index{answer\_a() (pytexexam.question.Question method)@\spxentry{answer\_a()}\spxextra{pytexexam.question.Question method}} +\index{answer\_column (pytexexam.question.Question attribute)@\spxentry{answer\_column}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_a}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_a}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer A for the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer A - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True. otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_column}}\pysigline{\sphinxbfcode{\sphinxupquote{answer\_column}}} +\sphinxAtStartPar +Number of columns for which the answer will be presented. \end{fulllineitems} -\index{answer\_b() (pytexexam.question.Question method)@\spxentry{answer\_b()}\spxextra{pytexexam.question.Question method}} +\index{answers (pytexexam.question.Question attribute)@\spxentry{answers}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_b}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_b}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer B to the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer B - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True, otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.answers}}\pysigline{\sphinxbfcode{\sphinxupquote{answers}}\sphinxbfcode{\sphinxupquote{: List\DUrole{p}{{[}}answer.Answer\DUrole{p}{{]}}}}} +\sphinxAtStartPar +Question answers \end{fulllineitems} -\index{answer\_c() (pytexexam.question.Question method)@\spxentry{answer\_c()}\spxextra{pytexexam.question.Question method}} +\index{get\_true\_answer\_key() (pytexexam.question.Question method)@\spxentry{get\_true\_answer\_key()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_c}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_c}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer C to the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer C - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True, otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_true_answer_key}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_true\_answer\_key}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Get answer key of true answer \end{fulllineitems} -\index{answer\_d() (pytexexam.question.Question method)@\spxentry{answer\_d()}\spxextra{pytexexam.question.Question method}} +\index{print\_question\_latex() (pytexexam.question.Question method)@\spxentry{print\_question\_latex()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answer_d}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answer\_d}}}{\emph{answer: str}, \emph{true\_answer=False}}{} -This method is used to enter answer D for the question. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer}} \textendash{} Content of the answer D - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} If this is the correct answer then enter True, otherwise False - -\end{itemize} - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.print_question_latex}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{print\_question\_latex}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +generate latex code for this question \end{fulllineitems} -\index{answers() (pytexexam.question.Question method)@\spxentry{answers()}\spxextra{pytexexam.question.Question method}} +\index{print\_solution\_latex() (pytexexam.question.Question method)@\spxentry{print\_solution\_latex()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.answers}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{answers}}}{\emph{true\_answer: str, answer\_dict: Dict{[}str, str{]}}}{} -Another way to enter answers to questions. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{true\_answer}} \textendash{} The letter that corresponds to the correct answer (A, B, C, D) - -\item {} -\sphinxstyleliteralstrong{\sphinxupquote{answer\_dict}} \textendash{} A dictionary contains the answers to the questions. The corresponding key of this dictionary is A, B, C, D. - -\end{itemize} - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{get\_answer() (pytexexam.question.Question method)@\spxentry{get\_answer()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_answer}}}{\emph{answer\_key: str}}{{ $\rightarrow$ str}} -This method is used to get answers to questions. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{answer\_key}} \textendash{} The key corresponding to the answer of the question. - -\item[{Returns}] \leavevmode -The answer corresponds to the selected answer. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{get\_answer\_column() (pytexexam.question.Question method)@\spxentry{get\_answer\_column()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_answer_column}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_answer\_column}}}{}{{ $\rightarrow$ int}} -This method returns the number of columns where the answer will be presented when the -question is printed. The function can return 1, 2, 4. -\begin{quote}\begin{description} -\item[{Returns}] \leavevmode -The number of columns the answer will be displayed when the question is printed - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{get\_true\_answer() (pytexexam.question.Question method)@\spxentry{get\_true\_answer()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.get_true_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_true\_answer}}}{}{{ $\rightarrow$ str}} -This method returns the character corresponding to the correct answer of the question. -The possible answer are A, B, C, D. -\begin{quote}\begin{description} -\item[{Returns}] \leavevmode -The letter corresponding to the correct answer of the question - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.print_solution_latex}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{print\_solution\_latex}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code to print question and solution \end{fulllineitems} \index{question (pytexexam.question.Question attribute)@\spxentry{question}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.question}}\pysigline{\sphinxbfcode{\sphinxupquote{question}}\sphinxbfcode{\sphinxupquote{ = None}}} +\phantomsection\label{\detokenize{index:pytexexam.question.Question.question}}\pysigline{\sphinxbfcode{\sphinxupquote{question}}\sphinxbfcode{\sphinxupquote{: str}}} +\sphinxAtStartPar Content of the question. \end{fulllineitems} -\index{set\_answer\_column() (pytexexam.question.Question method)@\spxentry{set\_answer\_column()}\spxextra{pytexexam.question.Question method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.set_answer_column}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{set\_answer\_column}}}{\emph{answer\_column: int}}{} -This method allows you to enter the number of columns where the answer will be displayed -when printing the question. The possible values ​​are 1, 2, 4 -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{answer\_column}} \textendash{} The number of columns the answer will be displayed when printed. - -\end{description}\end{quote} - -\end{fulllineitems} - \index{shuffle\_answer() (pytexexam.question.Question method)@\spxentry{shuffle\_answer()}\spxextra{pytexexam.question.Question method}} \begin{fulllineitems} \phantomsection\label{\detokenize{index:pytexexam.question.Question.shuffle_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{shuffle\_answer}}}{}{} -The method that allows the swap answers in question. +\sphinxAtStartPar +Shuffle answer list \end{fulllineitems} -\index{solution() (pytexexam.question.Question method)@\spxentry{solution()}\spxextra{pytexexam.question.Question method}} +\index{solution (pytexexam.question.Question attribute)@\spxentry{solution}\spxextra{pytexexam.question.Question attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.question.Question.solution}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{solution}}}{\emph{solution: str}}{} -This method is used to enter detailed answer to the question +\phantomsection\label{\detokenize{index:pytexexam.question.Question.solution}}\pysigline{\sphinxbfcode{\sphinxupquote{solution}}} +\sphinxAtStartPar +Solution of the question \end{fulllineitems} \end{fulllineitems} -\phantomsection\label{\detokenize{index:module-pytexexam.exam}}\index{pytexexam.exam (module)@\spxentry{pytexexam.exam}\spxextra{module}}\index{Exam (class in pytexexam.exam)@\spxentry{Exam}\spxextra{class in pytexexam.exam}} +\phantomsection\label{\detokenize{index:module-pytexexam.exam}}\index{module@\spxentry{module}!pytexexam.exam@\spxentry{pytexexam.exam}}\index{pytexexam.exam@\spxentry{pytexexam.exam}!module@\spxentry{module}}\index{Exam (class in pytexexam.exam)@\spxentry{Exam}\spxextra{class in pytexexam.exam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.exam.Exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.exam.}}\sphinxbfcode{\sphinxupquote{Exam}}}{\emph{question\_list: List{[}question.Question{]}}}{} +\phantomsection\label{\detokenize{index:pytexexam.exam.Exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.exam.}}\sphinxbfcode{\sphinxupquote{Exam}}}{\emph{\DUrole{n}{question\_list}\DUrole{p}{:} \DUrole{n}{List\DUrole{p}{{[}}question.Question\DUrole{p}{{]}}}}}{} +\sphinxAtStartPar This class represents an exam. \index{question\_list (pytexexam.exam.Exam attribute)@\spxentry{question\_list}\spxextra{pytexexam.exam.Exam attribute}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.exam.Exam.question_list}}\pysigline{\sphinxbfcode{\sphinxupquote{question\_list}}\sphinxbfcode{\sphinxupquote{ = None}}} +\phantomsection\label{\detokenize{index:pytexexam.exam.Exam.question_list}}\pysigline{\sphinxbfcode{\sphinxupquote{question\_list}}} +\sphinxAtStartPar List of questions in the exam \end{fulllineitems} @@ -300,6 +201,7 @@ \chapter{Pytexexam main class} \begin{fulllineitems} \phantomsection\label{\detokenize{index:pytexexam.exam.Exam.shuffle_question}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{shuffle\_question}}}{}{} +\sphinxAtStartPar This method allows to shuffle all the questions in the exam. \end{fulllineitems} @@ -307,133 +209,54 @@ \chapter{Pytexexam main class} \end{fulllineitems} -\phantomsection\label{\detokenize{index:module-pytexexam.latexexam}}\index{pytexexam.latexexam (module)@\spxentry{pytexexam.latexexam}\spxextra{module}}\index{LatexExam (class in pytexexam.latexexam)@\spxentry{LatexExam}\spxextra{class in pytexexam.latexexam}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExam}}}{\emph{exam\_title: str}, \emph{exam: exam.Exam}}{} -This class represents a exam, allowing users to print the exam and answer to a tex file -or pdf (with latex pre-installed) -\index{add\_user\_preamble() (pytexexam.latexexam.LatexExam method)@\spxentry{add\_user\_preamble()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.add_user_preamble}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{add\_user\_preamble}}}{\emph{preamble: str}}{} -Added preamble of latex file - -\end{fulllineitems} - -\index{exam\_content (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_content}\spxextra{pytexexam.latexexam.LatexExam attribute}} +\phantomsection\label{\detokenize{index:module-pytexexam.latexexam}}\index{module@\spxentry{module}!pytexexam.latexexam@\spxentry{pytexexam.latexexam}}\index{pytexexam.latexexam@\spxentry{pytexexam.latexexam}!module@\spxentry{module}}\index{LatexExamAnswer (class in pytexexam.latexexam)@\spxentry{LatexExamAnswer}\spxextra{class in pytexexam.latexexam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.exam_content}}\pysigline{\sphinxbfcode{\sphinxupquote{exam\_content}}\sphinxbfcode{\sphinxupquote{ = None}}} -The content of the exam - -\end{fulllineitems} - -\index{exam\_header (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_header}\spxextra{pytexexam.latexexam.LatexExam attribute}} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamAnswer}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExamAnswer}}} +\sphinxAtStartPar +This class is used to create an answer keys +\index{get\_latex\_string() (pytexexam.latexexam.LatexExamAnswer method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamAnswer method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.exam_header}}\pysigline{\sphinxbfcode{\sphinxupquote{exam\_header}}\sphinxbfcode{\sphinxupquote{ = None}}} -The presentation of the exam’s header +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamAnswer.get_latex_string}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_latex\_string}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code \end{fulllineitems} -\index{exam\_title (pytexexam.latexexam.LatexExam attribute)@\spxentry{exam\_title}\spxextra{pytexexam.latexexam.LatexExam attribute}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.exam_title}}\pysigline{\sphinxbfcode{\sphinxupquote{exam\_title}}\sphinxbfcode{\sphinxupquote{ = None}}} -Exam name \end{fulllineitems} -\index{export\_pdf\_answer() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}} +\index{LatexExamPaper (class in pytexexam.latexexam)@\spxentry{LatexExamPaper}\spxextra{class in pytexexam.latexexam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_pdf_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_pdf\_answer}}}{\emph{file\_name: str}}{} -This method export the answer as a tex file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{export\_pdf\_exam() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamPaper}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExamPaper}}} +\sphinxAtStartPar +This class is used to create an exam paper +\index{get\_latex\_string() (pytexexam.latexexam.LatexExamPaper method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamPaper method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_pdf_exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_pdf\_exam}}}{\emph{file\_name: str}}{} -This method export the exam as a pdf file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamPaper.get_latex_string}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_latex\_string}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code \end{fulllineitems} -\index{export\_pdf\_solution() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_pdf\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_pdf_solution}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_pdf\_solution}}}{\emph{file\_name: str}}{} -Export a file containing detailed answers for each question in the exam \end{fulllineitems} -\index{export\_tex\_answer() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_answer()}\spxextra{pytexexam.latexexam.LatexExam method}} +\index{LatexExamSolution (class in pytexexam.latexexam)@\spxentry{LatexExamSolution}\spxextra{class in pytexexam.latexexam}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_tex_answer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_tex\_answer}}}{\emph{file\_name: str}}{} -This method export the answer as a tex file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{export\_tex\_exam() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_exam()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_tex_exam}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_tex\_exam}}}{\emph{file\_name: str}}{} -This method proposed exam as a tex file. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\sphinxstyleliteralstrong{\sphinxupquote{file\_name}} \textendash{} The file name will output. - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{export\_tex\_solution() (pytexexam.latexexam.LatexExam method)@\spxentry{export\_tex\_solution()}\spxextra{pytexexam.latexexam.LatexExam method}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.export_tex_solution}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{export\_tex\_solution}}}{\emph{file\_name: str}}{} -Export a file containing detailed answers for each question in the exam - -\end{fulllineitems} - -\index{question\_theorem (pytexexam.latexexam.LatexExam attribute)@\spxentry{question\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.question_theorem}}\pysigline{\sphinxbfcode{\sphinxupquote{question\_theorem}}\sphinxbfcode{\sphinxupquote{ = None}}} -The content of the beginning of each question will be printed - -\end{fulllineitems} - -\index{solution\_theorem (pytexexam.latexexam.LatexExam attribute)@\spxentry{solution\_theorem}\spxextra{pytexexam.latexexam.LatexExam attribute}} - -\begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.solution_theorem}}\pysigline{\sphinxbfcode{\sphinxupquote{solution\_theorem}}\sphinxbfcode{\sphinxupquote{ = None}}} -The content of the beginning of each detailed answer will be printed - -\end{fulllineitems} - -\index{user\_preamble (pytexexam.latexexam.LatexExam attribute)@\spxentry{user\_preamble}\spxextra{pytexexam.latexexam.LatexExam attribute}} +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamSolution}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{pytexexam.latexexam.}}\sphinxbfcode{\sphinxupquote{LatexExamSolution}}} +\sphinxAtStartPar +Generate solution paper for this exam +\index{get\_latex\_string() (pytexexam.latexexam.LatexExamSolution method)@\spxentry{get\_latex\_string()}\spxextra{pytexexam.latexexam.LatexExamSolution method}} \begin{fulllineitems} -\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExam.user_preamble}}\pysigline{\sphinxbfcode{\sphinxupquote{user\_preamble}}\sphinxbfcode{\sphinxupquote{ = None}}} -Preamble of the latex file corresponds to the exam +\phantomsection\label{\detokenize{index:pytexexam.latexexam.LatexExamSolution.get_latex_string}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{get\_latex\_string}}}{}{{ $\rightarrow$ str}} +\sphinxAtStartPar +Generate latex code \end{fulllineitems} @@ -443,11 +266,12 @@ \chapter{Pytexexam main class} \chapter{Pytexexam util class} -\label{\detokenize{index:module-pytexexam.latexexamutil}}\label{\detokenize{index:pytexexam-util-class}}\index{pytexexam.latexexamutil (module)@\spxentry{pytexexam.latexexamutil}\spxextra{module}}\index{ams\_math\_package() (in module pytexexam.latexexamutil)@\spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}} +\label{\detokenize{index:module-pytexexam.latexexamutil}}\label{\detokenize{index:pytexexam-util-class}}\index{module@\spxentry{module}!pytexexam.latexexamutil@\spxentry{pytexexam.latexexamutil}}\index{pytexexam.latexexamutil@\spxentry{pytexexam.latexexamutil}!module@\spxentry{module}}\index{ams\_math\_package() (in module pytexexam.latexexamutil)@\spxentry{ams\_math\_package()}\spxextra{in module pytexexam.latexexamutil}} \begin{fulllineitems} \phantomsection\label{\detokenize{index:pytexexam.latexexamutil.ams_math_package}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{pytexexam.latexexamutil.}}\sphinxbfcode{\sphinxupquote{ams\_math\_package}}}{}{{ $\rightarrow$ str}} -Returns the command lines needed to type math formula in latex +\sphinxAtStartPar +Returns the code needed to add in preamble to type math formula in latex \end{fulllineitems} diff --git a/docs/_build/sphinx.sty b/docs/_build/sphinx.sty index c18e87a..e6c27c1 100755 --- a/docs/_build/sphinx.sty +++ b/docs/_build/sphinx.sty @@ -6,7 +6,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{sphinx}[2019/09/02 v2.2.1 LaTeX package (Sphinx markup)] +\ProvidesPackage{sphinx}[2021/01/23 v3.5.0 LaTeX package (Sphinx markup)] % provides \ltx@ifundefined % (many packages load ltxcmds: graphicx does for pdftex and lualatex but @@ -40,7 +40,7 @@ % for \text macro and \iffirstchoice@ conditional even if amsmath not loaded \RequirePackage{amstext} \RequirePackage{textcomp}% "warn" option issued from template -\RequirePackage{titlesec} +\RequirePackage[nobottomtitles*]{titlesec} \@ifpackagelater{titlesec}{2016/03/15}% {\@ifpackagelater{titlesec}{2016/03/21}% {}% @@ -119,7 +119,8 @@ {\dimexpr-\dp\strutbox -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}% +\sphinxbelowcaptionspace\relax}% -\def\sphinxatlongtableend{\prevdepth\z@\vskip\sphinxtablepost\relax}% +\def\sphinxatlongtableend{\@nobreakfalse % latex3/latex2e#173 + \prevdepth\z@\vskip\sphinxtablepost\relax}% % B. Table with tabular or tabulary \def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}% \let\sphinxattableend\sphinxatlongtableend @@ -238,6 +239,8 @@ \ltx@ifundefined{@removefromreset} {\RequirePackage{remreset}} {}% avoid warning +% To support hlist directive +\RequirePackage{multicol} % to make pdf with correct encoded bookmarks in Japanese % this should precede the hyperref package \ifx\kanjiskip\@undefined @@ -331,6 +334,9 @@ % verbatim \DeclareBoolOption[true]{verbatimwithframe} \DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[false]{verbatimforcewraps} +\DeclareStringOption[3]{verbatimmaxoverfull} +\DeclareStringOption[100]{verbatimmaxunderfull} \DeclareBoolOption[true]{verbatimhintsturnover} \DeclareBoolOption[true]{inlineliteralwraps} \DeclareStringOption[t]{literalblockcappos} @@ -409,6 +415,11 @@ \DisableKeyvalOption{sphinx}{numfigreset} \DisableKeyvalOption{sphinx}{nonumfigreset} \DisableKeyvalOption{sphinx}{mathnumfig} +% To allow hyphenation of first word in narrow contexts; no option, +% customization to be done via 'preamble' key +\newcommand*\sphinxAtStartPar{\leavevmode\nobreak\hskip\z@skip} +% No need for the \hspace{0pt} trick (\hskip\z@skip) with luatex +\ifdefined\directlua\let\sphinxAtStartPar\@empty\fi % user interface: options can be changed midway in a document! \newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}} @@ -587,12 +598,14 @@ {% classes with \chapter command \fancypagestyle{normal}{ \fancyhf{} - % FIXME: this presupposes "twoside". - % If "oneside" class option, there are warnings in LaTeX log. - \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} - \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} - \fancyhead[LE,RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \fancyhead[RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \if@twoside + \fancyfoot[LE]{{\py@HeaderFamily\thepage}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \fi \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt} % define chaptermark with \@chappos when \@chappos is available for Japanese @@ -604,7 +617,8 @@ % page of a chapter `clean.' \fancypagestyle{plain}{ \fancyhf{} - \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} + \if@twoside\fancyfoot[LE]{{\py@HeaderFamily\thepage}}\fi \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0.4pt} } @@ -705,17 +719,17 @@ % Augment the sectioning commands used to get our own font family in place, % and reset some internal data items (\titleformat from titlesec package) \titleformat{\section}{\Large\py@HeaderFamily}% - {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor} \titleformat{\subsection}{\large\py@HeaderFamily}% - {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor} \titleformat{\subsubsection}{\py@HeaderFamily}% - {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor} % By default paragraphs (and subsubsections) will not be numbered because % sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 \titleformat{\paragraph}{\py@HeaderFamily}% - {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor} \titleformat{\subparagraph}{\py@HeaderFamily}% - {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor} %% GRAPHICS @@ -733,7 +747,7 @@ \AtBeginDocument{\spx@image@maxheight\textheight} % box scratch register -\newdimen\spx@image@box +\newbox\spx@image@box \newcommand*{\sphinxsafeincludegraphics}[2][]{% % #1 contains possibly width=, height=, but no scale= since 1.8.4 \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% @@ -833,6 +847,28 @@ %% FOOTNOTES % +% Support scopes for footnote numbering +\newcounter{sphinxscope} +\newcommand{\sphinxstepscope}{\stepcounter{sphinxscope}} +% Explictly numbered footnotes may be referred to, and for this to be +% clickable we need to have only one target. So we will step this at each +% explicit footnote and let \thesphinxscope take it into account +\newcounter{sphinxexplicit} +\newcommand{\sphinxstepexplicit}{\stepcounter{sphinxexplicit}} +% Some babel/polyglossia languages fiddle with \@arabic, so let's be extra +% cautious and redefine \thesphinxscope with \number not \@arabic. +% Memo: we expect some subtle redefinition of \thesphinxscope to be a part of page +% scoping for footnotes, when we shall implement it. +\renewcommand{\thesphinxscope}{\number\value{sphinxscope}.\number\value{sphinxexplicit}} +\newcommand\sphinxthefootnotemark[2]{% + % this is used to make reference to an explicitly numbered footnote not on same page + % #1=label of footnote text, #2=page number where footnote text was printed + \ifdefined\pagename + \pagename\space#2, % <- space + \else + p. #2, % <- space + \fi #1% no space +} % Support large numbered footnotes in minipage % But now obsolete due to systematic use of \savenotes/\spewnotes % when minipages are in use in the various macro definitions next. @@ -840,6 +876,12 @@ %% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS + +% Everything is delayed to \begin{document} to allow hyperref patches into +% \newcounter to solve duplicate label problems for internal hyperlinks to +% code listings (literalblock counter). User or extension re-definitions of +% \theliteralblock, et al., thus have also to be delayed. (changed at 3.5.0) +\AtBeginDocument{% \ltx@ifundefined{c@chapter} {\newcounter{literalblock}}% {\newcounter{literalblock}[chapter]% @@ -885,7 +927,7 @@ \@addtoreset{literalblock}{section}% \ifspx@opt@mathnumfig \@addtoreset{equation}{section}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -895,7 +937,7 @@ \@addtoreset{literalblock}{subsection}% \ifspx@opt@mathnumfig \@addtoreset{equation}{subsection}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -905,7 +947,7 @@ \@addtoreset{literalblock}{subsubsection}% \ifspx@opt@mathnumfig \@addtoreset{equation}{subsubsection}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -915,7 +957,7 @@ \@addtoreset{literalblock}{paragraph}% \ifspx@opt@mathnumfig \@addtoreset{equation}{paragraph}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -925,7 +967,7 @@ \@addtoreset{literalblock}{subparagraph}% \ifspx@opt@mathnumfig \@addtoreset{equation}{subparagraph}% - \fi + \fi% \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}% \g@addto@macro\spx@preBthefigure{\fi}% \fi @@ -942,7 +984,7 @@ \g@addto@macro\theequation{\arabic{equation}}% \fi \fi - +}% end of big \AtBeginDocument %% LITERAL BLOCKS % @@ -952,9 +994,9 @@ % - with possibly of a top caption, non-separable by pagebreak. % - and usable inside tables or footnotes ("footnotehyper-sphinx"). -% For extensions which use \OriginalVerbatim and compatibility with Sphinx < -% 1.5, we define and use these when (unmodified) Verbatim will be needed. But -% Sphinx >= 1.5 does not modify the \Verbatim macro anymore. +% Prior to Sphinx 1.5, \Verbatim and \endVerbatim were modified by Sphinx. +% The aliases defined here are used in sphinxVerbatim environment and can +% serve as hook-points with no need to modify \Verbatim itself. \let\OriginalVerbatim \Verbatim \let\endOriginalVerbatim\endVerbatim @@ -1053,7 +1095,7 @@ % Take advantage of the already applied Pygments mark-up to insert % potential linebreaks for TeX processing. % {, <, #, %, $, ' and ": go to next line. -% _, }, ^, &, >, - and ~: stay at end of broken line. +% _, }, ^, &, >, -, ~, and \: stay at end of broken line. % Use of \textquotesingle for straight quote. % FIXME: convert this to package options ? \newcommand*\sphinxbreaksbeforelist {% @@ -1065,6 +1107,7 @@ \newcommand*\sphinxbreaksafterlist {% \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &, \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~ + \do\PYGZbs\\% \ } \newcommand*\sphinxbreaksatspecials {% \def\do##1##2% @@ -1076,7 +1119,7 @@ } \def\sphinx@verbatim@nolig@list {\do \`}% -% Some characters . , ; ? ! / are not pygmentized. +% Some characters . , ; ? ! / are neither pygmentized nor "tex-escaped". % This macro makes them "active" and they will insert potential linebreaks. % Not compatible with math mode (cf \sphinxunactivateextras). \newcommand*\sphinxbreaksbeforeactivelist {}% none @@ -1109,6 +1152,9 @@ \newcommand*\sphinxVerbatimTitle {} % This box to typeset the caption before framed.sty multiple passes for framing. \newbox\sphinxVerbatim@TitleBox +% This box to measure contents if nested as inner \MakeFramed requires then +% minipage encapsulation but too long contents then break outer \MakeFramed +\newbox\sphinxVerbatim@ContentsBox % This is a workaround to a "feature" of French lists, when literal block % follows immediately; usable generally (does only \par then), a priori... \newcommand*\sphinxvspacefixafterfrenchlists{% @@ -1150,13 +1196,188 @@ % no need to restore \fboxsep here, as this ends up in a \hbox from fancyvrb }% % \sphinxVerbatimFormatLine will be set locally to one of those two: -\newcommand\sphinxVerbatimFormatLineWrap[1]{% - \hsize\linewidth +\newcommand\sphinxVerbatimFormatLineWrap{% + \hsize\linewidth + \ifspx@opt@verbatimforcewraps + \expandafter\spx@verb@FormatLineForceWrap + \else\expandafter\spx@verb@FormatLineWrap + \fi +}% +\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +\long\def\spx@verb@FormatLineWrap#1{% \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ \doublehyphendemerits\z@\finalhyphendemerits\z@ \strut #1\strut}% }% -\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +% +% The normal line wrapping allows breaks at spaces and ascii non +% letters, non digits. The \raggedright above means there will be +% an overfilled line only if some non-breakable "word" was +% encountered, which is longer than a line (it is moved always to +% be on its own on a new line). +% +% The "forced" line wrapping will parse the tokens to add potential +% breakpoints at each character. As some strings are highlighted, +% we have to apply the highlighting character per character, which +% requires to manipulate the output of the Pygments LaTeXFormatter. +% +% Doing this at latex level is complicated. The contents should +% be as expected: i.e. some active characters from +% \sphinxbreaksviaactive, some Pygments character escapes such as +% \PYGZdl{}, and the highlighting \PYG macro with always 2 +% arguments. No other macros should be there, except perhaps +% zero-parameter macros. In particular: +% - the texcomments Pygments option must be set to False +% +% With pdflatex, Unicode input gives multi-bytes characters +% where the first byte is active. We support the "utf8" macros +% only. "utf8x" is not supported. +% +% The highlighting macro \PYG will be applied character per +% character. Highlighting via a colored background gives thus a +% chain of small colored boxes which may cause some artefact in +% some pdf viewers. Can't do anything here if we do want the line +% break to be possible. +% +% First a measurement step is done of what would the standard line +% wrapping give (i.e line breaks only at spaces and non-letter, +% non-digit ascii characters), cf TeX by Topic for the basic +% dissecting technique: TeX unfortunately when building a vertical +% box does not store in an accessible way what was the maximal +% line-width during paragraph building. +% +% If the max width exceeds the linewidth by more than verbatimmaxoverfull +% character widths, or if the min width plus verbatimmaxunderfull character +% widths is inferior to linewidth, then we apply the "force wrapping" with +% potential line break at each character, else we don't. +\long\def\spx@verb@FormatLineForceWrap#1{% + % \spx@image@box is a scratch box register that we can use here + \global\let\spx@verb@maxwidth\z@ + \global\let\spx@verb@minwidth\linewidth + \setbox\spx@image@box + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ + \strut #1\strut\@@par + \spx@verb@getwidths}% + \ifdim\spx@verb@maxwidth> + \dimexpr\linewidth+\spx@opt@verbatimmaxoverfull\fontcharwd\font`X \relax + \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}% + \else + \ifdim\spx@verb@minwidth< + \dimexpr\linewidth-\spx@opt@verbatimmaxunderfull\fontcharwd\font`X \relax + \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}% + \else + \spx@verb@FormatLineWrap{#1}% + \fi\fi +}% +% auxiliary paragraph dissector to get max and min widths +\newbox\spx@scratchbox +\def\spx@verb@getwidths {% + \unskip\unpenalty + \setbox\spx@scratchbox\lastbox + \ifvoid\spx@scratchbox + \else + \setbox\spx@scratchbox\hbox{\unhbox\spx@scratchbox}% + \ifdim\spx@verb@maxwidth<\wd\spx@scratchbox + \xdef\spx@verb@maxwidth{\number\wd\spx@scratchbox sp}% + \fi + \ifdim\spx@verb@minwidth>\wd\spx@scratchbox + \xdef\spx@verb@minwidth{\number\wd\spx@scratchbox sp}% + \fi + \expandafter\spx@verb@getwidths + \fi +}% +% auxiliary macros to implement "cut long line even in middle of word" +\catcode`Z=3 % safe delimiter +\def\spx@verb@wrapPYG{% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@i +}% +\def\spx@verb@wrapPYG@i{% + \ifx\spx@nexttoken\spx@verb@wrapPYG\let\next=\@gobble\else + \ifx\spx@nexttoken\PYG\let\next=\spx@verb@wrapPYG@PYG@onebyone\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@ii + \fi\fi + \next +}% +% Let's recognize active characters. We don't support utf8x only utf8. +% And here #1 should not have picked up (non empty) braced contents +\long\def\spx@verb@wrapPYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@two\else + \let\next=\spx@verb@wrapPYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@one #1{#1\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@two #1#2{#1#2\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@three #1#2#3{#1#2#3\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@four #1#2#3#4{#1#2#3#4\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +% Replace \PYG by itself applied one character at a time! This way breakpoints +% can be inserted. +\def\spx@verb@wrapPYG@PYG@onebyone#1#2#3{% #1 = \PYG, #2 = highlight spec, #3 = tokens + \def\spx@verb@wrapPYG@PYG@spec{{#2}}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i#3Z% +}% +\def\spx@verb@wrapPYG@PYG@i{% + \ifx\spx@nexttokenZ\let\next=\spx@verb@wrapPYG@PYG@done\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@PYG@ii + \fi + \next +}% +\def\spx@verb@wrapPYG@PYG@doneZ{\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@PYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@PYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@PYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@PYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@PYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@PYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@PYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@PYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@PYG@two\else + \let\next=\spx@verb@wrapPYG@PYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@PYG@one#1{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@two#1#2{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@three#1#2#3{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@four#1#2#3#4{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3#4}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\catcode`Z 11 % +% \g@addto@macro\FV@SetupFont{% \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% @@ -1255,17 +1476,23 @@ \itemsep \z@skip \topsep \z@skip \partopsep \z@skip - % trivlist will set \parsep to \parskip = zero + % trivlist will set \parsep to \parskip (which itself is set to zero above) % \leftmargin will be set to zero by trivlist \rightmargin\z@ \parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten. \trivlist\item\relax - \ifsphinxverbatimwithminipage\spx@inframedtrue\fi - % use a minipage if we are already inside a framed environment - \ifspx@inframed\noindent\begin{minipage}{\linewidth}\fi - \MakeFramed {% adapted over from framed.sty's snugshade environment + \ifspx@inframed\setbox\sphinxVerbatim@ContentsBox\vbox\bgroup + \@setminipage\hsize\linewidth + % use bulk of minipage paragraph shape restores (this is needed + % in indented contexts, at least for some) + \textwidth\hsize \columnwidth\hsize \@totalleftmargin\z@ + \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip + \else + \ifsphinxverbatimwithminipage\noindent\begin{minipage}{\linewidth}\fi + \MakeFramed {% adapted over from framed.sty's snugshade environment \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage }% + \fi % For grid placement from \strut's in \FancyVerbFormatLine \lineskip\z@skip % active comma should not be overwritten by \@noligs @@ -1277,8 +1504,49 @@ } {% \endOriginalVerbatim - \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade - \ifspx@inframed\end{minipage}\fi + \ifspx@inframed + \egroup % finish \sphinxVerbatim@ContentsBox vbox + \nobreak % update page totals + \ifdim\dimexpr\ht\sphinxVerbatim@ContentsBox+ + \dp\sphinxVerbatim@ContentsBox+ + \ht\sphinxVerbatim@TitleBox+ + \dp\sphinxVerbatim@TitleBox+ + 2\fboxsep+2\fboxrule+ + % try to account for external frame parameters + \FrameSep+\FrameRule+ + % Usage here of 2 baseline distances is empirical. + % In border case where code-block fits barely in remaining space, + % it gets framed and looks good but the outer frame may continue + % on top of next page and give (if no contents after code-block) + % an empty framed line, as testing showed. + 2\baselineskip+ + % now add all to accumulated page totals and compare to \pagegoal + \pagetotal+\pagedepth>\pagegoal + % long contents: do not \MakeFramed. Do make a caption (either before or + % after) if title exists. Continuation hints across pagebreaks dropped. + % FIXME? a bottom caption may end up isolated at top of next page + % (no problem with a top caption, which is default) + \spx@opt@verbatimwithframefalse + \def\sphinxVerbatim@Title{\noindent\box\sphinxVerbatim@TitleBox\par}% + \sphinxVerbatim@Before + \noindent\unvbox\sphinxVerbatim@ContentsBox\par + \sphinxVerbatim@After + \else + % short enough contents: use \MakeFramed. As it is nested, this requires + % minipage encapsulation. + \noindent\begin{minipage}{\linewidth}% + \MakeFramed {% Use it now with the fetched contents + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \unvbox\sphinxVerbatim@ContentsBox + % some of this may be superfluous: + \par\unskip\@minipagefalse\endMakeFramed + \end{minipage}% + \fi + \else % non-nested \MakeFramed + \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade + \ifsphinxverbatimwithminipage\end{minipage}\fi + \fi \endtrivlist } \newenvironment {sphinxVerbatimNoFrame} @@ -1313,10 +1581,10 @@ {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &, \do\textgreater\>\do\textasciitilde\~% >, ~ + \do\textbackslash\\% \ } \newcommand*\sphinxbreaksviaactiveinparsedliteral{% \sphinxbreaksviaactive % by default handles . , ; ? ! / - \do\-% we need also the hyphen character (ends up "as is" in parsed-literal) \lccode`\~`\~ % % update \dospecials as it is used by \url % but deactivation will already have been done hence this is unneeded: @@ -1327,7 +1595,7 @@ \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~ } \newcommand*{\sphinxunactivateextras}{\let\do\@makeother - \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% + \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist}% % the \catcode13=5\relax (deactivate end of input lines) is left to callers \newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax \sphinxunactivateextras}% @@ -1355,7 +1623,8 @@ % \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref. \protected\def\sphinxhref#1#2{{% \sphinxunactivateextrasandspace % never do \scantokens with active space! - \endlinechar\m@ne\everyeof{{#2}}% keep catcode regime for #2 +% for the \endlinechar business, https://github.com/latex3/latex2e/issues/286 + \endlinechar\m@ne\everyeof{{\endlinechar13 #2}}% keep catcode regime for #2 \scantokens{\href{#1}}% normalise it for #1 during \href expansion }} % Same for \url. And also \nolinkurl for coherence. @@ -1735,17 +2004,37 @@ % to obtain straight quotes we execute \@noligs as patched by upquote, and % \scantokens is needed in cases where it would be too late for the macro to % first set catcodes and then fetch its argument. We also make the contents -% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive. +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive, +% and also at \ character (which is escaped to \textbackslash{}). +\protected\def\sphinxtextbackslashbreakbefore + {\discretionary{}{\sphinxafterbreak\sphinx@textbackslash}{\sphinx@textbackslash}} +\protected\def\sphinxtextbackslashbreakafter + {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}} +\let\sphinxtextbackslash\sphinxtextbackslashbreakafter % the macro must be protected if it ends up used in moving arguments, % in 'alltt' \@noligs is done already, and the \scantokens must be avoided. \protected\def\sphinxupquote#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else \ifspx@opt@inlineliteralwraps - \sphinxbreaksviaactive\let\sphinxafterbreak\empty + % break at . , ; ? ! / + \sphinxbreaksviaactive + % break also at \ + \let\sphinx@textbackslash\textbackslash + \let\textbackslash\sphinxtextbackslash + % by default, no continuation symbol on next line but may be added + \let\sphinxafterbreak\sphinxafterbreakofinlineliteral % do not overwrite the comma set-up \let\verbatim@nolig@list\sphinx@literal@nolig@list \fi % fix a space-gobbling issue due to LaTeX's original \do@noligs +% TODO: using \@noligs as patched by upquote.sty is now unneeded because +% either ` and ' are escaped (non-unicode engines) or they don't build +% ligatures (unicode engines). Thus remove this and unify handling of `, <, >, +% ' and - with the characters . , ; ? ! / as handled via +% \sphinxbreaksviaactive. +% Hence \sphinx@do@noligs will be removed, or rather replaced with code +% inserting discretionaries, as they allow a continuation symbol on start of +% next line to achieve common design with code-blocks. \let\do@noligs\sphinx@do@noligs \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref) \expandafter\scantokens @@ -1753,6 +2042,7 @@ \def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} \def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% +\let\sphinxafterbreakofinlineliteral\empty % Some custom font markup commands. \protected\def\sphinxstrong#1{\textbf{#1}} @@ -1763,6 +2053,7 @@ \protected\def\sphinxtitleref#1{\emph{#1}} \protected\def\sphinxmenuselection#1{\emph{#1}} \protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxkeyboard#1{\sphinxcode{#1}} \protected\def\sphinxaccelerator#1{\underline{#1}} \protected\def\sphinxcrossref#1{\emph{#1}} \protected\def\sphinxtermref#1{\emph{#1}} @@ -1775,8 +2066,8 @@ \def\sphinxstyleindexextra #1{ (\emph{#1})} \def\sphinxstyleindexpageref #1{, \pageref{#1}} \def\sphinxstyleindexpagemain#1{\textbf{#1}} -\protected\def\spxentry#1{#1}% will get \let to \sphinxstyleindexentry in index -\protected\def\spxextra#1{#1}% will get \let to \sphinxstyleindexextra in index +\def\spxentry{\@backslashchar spxentry}% let to \sphinxstyleindexentry in index +\def\spxextra{\@backslashchar spxextra}% let to \sphinxstyleindexextra in index \def\sphinxstyleindexlettergroup #1% {{\Large\sffamily#1}\nopagebreak\vspace{1mm}} \def\sphinxstyleindexlettergroupDefault #1% @@ -1800,6 +2091,7 @@ % reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds \AtBeginDocument{\pdfstringdefDisableCommands{% % all "protected" macros possibly ending up in section titles should be here +% TODO: examine if \sphinxhref, \sphinxurl, \sphinnolinkurl should be handled \let\sphinxstyleemphasis \@firstofone \let\sphinxstyleliteralemphasis \@firstofone \let\sphinxstylestrong \@firstofone @@ -1813,8 +2105,20 @@ \let\sphinxemail \@firstofone \let\sphinxcrossref \@firstofone \let\sphinxtermref \@firstofone + \let\sphinxhyphen\sphinxhyphenforbookmarks }} +% Special characters +% +% This definition prevents en-dash and em-dash TeX ligatures. +% +% It inserts a potential breakpoint after the hyphen. This is to keep in sync +% with behavior in code-blocks, parsed and inline literals. For a breakpoint +% before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother) +\protected\def\sphinxhyphen#1{-\kern\z@} +% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark +\def\sphinxhyphenforbookmarks{-} + % For curly braces inside \index macro \def\sphinxleftcurlybrace{\{} \def\sphinxrightcurlybrace{\}} diff --git a/docs/_build/sphinx.xdy b/docs/_build/sphinx.xdy index 1c0794c..edca178 100755 --- a/docs/_build/sphinx.xdy +++ b/docs/_build/sphinx.xdy @@ -112,12 +112,14 @@ (merge-rule "\_" "_" :string) (merge-rule "{[}" "[" :string) (merge-rule "{]}" "]" :string) -(merge-rule "{}`" "`" :string) (merge-rule "\textbackslash{}" "\" :string) ; " for Emacs syntax highlighting (merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here +(merge-rule "\textasciicircum{}" "^" :string) +(merge-rule "\sphinxhyphen{}" "-" :string) +(merge-rule "\textquotesingle{}" "'" :string) +(merge-rule "\textasciigrave{}" "`" :string) (merge-rule "\textless{}" "<" :string) (merge-rule "\textgreater{}" ">" :string) -(merge-rule "\textasciicircum{}" "^" :string) (merge-rule "\P{}" "¶" :string) (merge-rule "\S{}" "§" :string) (merge-rule "\texteuro{}" "€" :string) diff --git a/docs/_build/sphinxcyrillic.sty b/docs/_build/sphinxcyrillic.sty index 1a14c7b..6747b5e 100755 --- a/docs/_build/sphinxcyrillic.sty +++ b/docs/_build/sphinxcyrillic.sty @@ -11,11 +11,11 @@ \ProcessLocalKeyvalOptions* % ignore class options \ifspx@cyropt@Xtwo -% original code by tex.sx user egreg: +% original code by tex.sx user egreg (updated 2019/10/28): % https://tex.stackexchange.com/a/460325/ % 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding % This assumes inputenc loaded with utf8 option, or LaTeX release -% as recent as 2018/04/01 which does it automatically. +% as recent as 2018/04/01 which does it automatically. \@tfor\next:=% {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}% {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}% @@ -27,7 +27,9 @@ {Ӎ}{ӎ}{Ӕ}{ӕ}{Ә}{ә}{Ӡ}{ӡ}{Ө}{ө}\do {% \begingroup\def\IeC{\protect\DeclareTextSymbolDefault}% - \protected@edef\@temp{\endgroup\next{X2}}\@temp + \protected@edef\@temp{\endgroup + \@ifl@t@r{\fmtversion}{2019/10/01}{\csname u8:\next\endcsname}{\next}}% + \@temp{X2}% }% \else \ifspx@cyropt@TtwoA diff --git a/docs/_build/sphinxhowto.cls b/docs/_build/sphinxhowto.cls index ba5e003..0848a79 100755 --- a/docs/_build/sphinxhowto.cls +++ b/docs/_build/sphinxhowto.cls @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sphinxhowto}[2018/12/23 v2.0 Document class (Sphinx howto)] +\ProvidesClass{sphinxhowto}[2019/12/01 v2.3.0 Document class (Sphinx howto)] % 'oneside' option overriding the 'twoside' default \newif\if@oneside @@ -27,6 +27,17 @@ \setcounter{secnumdepth}{2} \setcounter{tocdepth}{2}% i.e. section and subsection +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% % Change the title page to look a bit better, and fit in with the fncychap % ``Bjarne'' style a bit better. % @@ -65,7 +76,7 @@ \endgroup \noindent\rule{\textwidth}{1pt}\par \vspace{12pt}% -} +} \newcommand\sphinxtableofcontentshook{} \pagenumbering{arabic} diff --git a/docs/_build/sphinxmanual.cls b/docs/_build/sphinxmanual.cls index e7c8f41..718189d 100755 --- a/docs/_build/sphinxmanual.cls +++ b/docs/_build/sphinxmanual.cls @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sphinxmanual}[2018/12/23 v2.0 Document class (Sphinx manual)] +\ProvidesClass{sphinxmanual}[2019/12/01 v2.3.0 Document class (Sphinx manual)] % chapters starting at odd pages (overridden by 'openany' document option) \PassOptionsToClass{openright}{\sphinxdocclass} @@ -30,6 +30,17 @@ \setcounter{secnumdepth}{2} \setcounter{tocdepth}{1} +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% % Change the title page to look a bit better, and fit in with the fncychap % ``Bjarne'' style a bit better. % diff --git a/docs/_build/sphinxmessages.sty b/docs/_build/sphinxmessages.sty index 121f0af..68ebffa 100755 --- a/docs/_build/sphinxmessages.sty +++ b/docs/_build/sphinxmessages.sty @@ -7,7 +7,7 @@ \renewcommand{\literalblockcontinuedname}{continued from previous page} \renewcommand{\literalblockcontinuesname}{continues on next page} -\renewcommand{\sphinxnonalphabeticalgroupname}{Non-alphabetical} +\renewcommand{\sphinxnonalphabeticalgroupname}{Non\sphinxhyphen{}alphabetical} \renewcommand{\sphinxsymbolsname}{Symbols} \renewcommand{\sphinxnumbersname}{Numbers} \def\pageautorefname{page} diff --git a/docs/_build/sphinxmulticell.sty b/docs/_build/sphinxmulticell.sty index f0d11b1..a645491 100755 --- a/docs/_build/sphinxmulticell.sty +++ b/docs/_build/sphinxmulticell.sty @@ -229,10 +229,10 @@ % whether or not the multirow is single-column or multi-column. % % In passing we obtain baseline alignements across rows (only if -% \arraylinestretch is 1, as LaTeX's does not obey \arraylinestretch in "p" +% \arraystretch is 1, as LaTeX's does not obey \arraystretch in "p" % multi-line contents, only first and last line...) % -% TODO: examine the situation with \arraylinestretch > 1. The \extrarowheight +% TODO: examine the situation with \arraystretch > 1. The \extrarowheight % is hopeless for multirow anyhow, it makes baseline alignment strictly % impossible. \newcommand\sphinxmultirow[2]{\begingroup diff --git a/out/exam1.log b/out/exam1.log index 27ae801..cd15f93 100755 --- a/out/exam1.log +++ b/out/exam1.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 12 JAN 2021 21:32 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.9.6) 17 MAR 2021 14:51 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -95,42 +95,111 @@ File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) \cellspace@firstht=\dimen143 \cellspace@lastdp=\dimen144 ) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2020/01/20 v2.17e AMS math features +\@mathmargin=\skip54 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks18 +\ex@=\dimen145 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen146 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count180 +LaTeX Info: Redefining \frac on input line 227. +\uproot@=\count181 +\leftroot@=\count182 +LaTeX Info: Redefining \overline on input line 389. +\classnum@=\count183 +\DOTSCASE@=\count184 +LaTeX Info: Redefining \ldots on input line 486. +LaTeX Info: Redefining \dots on input line 489. +LaTeX Info: Redefining \cdots on input line 610. +\Mathstrutbox@=\box47 +\strutbox@=\box48 +\big@size=\dimen147 +LaTeX Font Info: Redeclaring font encoding OML on input line 733. +LaTeX Font Info: Redeclaring font encoding OMS on input line 734. +\macc@depth=\count185 +\c@MaxMatrixCols=\count186 +\dotsspace@=\muskip16 +\c@parentequation=\count187 +\dspbrk@lvl=\count188 +\tag@help=\toks19 +\row@=\count189 +\column@=\count190 +\maxfields@=\count191 +\andhelp@=\toks20 +\eqnshift@=\dimen148 +\alignsep@=\dimen149 +\tagshift@=\dimen150 +\tagwidth@=\dimen151 +\totwidth@=\dimen152 +\lineht@=\dimen153 +\@envbody=\toks21 +\multlinegap=\skip55 +\multlinetaggap=\skip56 +\mathdisplay@stack=\toks22 +LaTeX Info: Redefining \[ on input line 2859. +LaTeX Info: Redefining \] on input line 2860. +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols +) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode -\l__kernel_color_stack_int=\count180 -\l__pdf_internal_box=\box47 +\l__kernel_color_stack_int=\count192 +\l__pdf_internal_box=\box49 ) (/home/binh/Data/PycharmProjects/pytexexam/out/exam1.aux) \openout1 = `exam1.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 10. -LaTeX Font Info: ... okay on input line 10. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count181 -\scratchdimen=\dimen145 -\scratchbox=\box48 -\nofMPsegments=\count182 -\nofMParguments=\count183 -\everyMPshowfont=\toks18 -\MPscratchCnt=\count184 -\MPscratchDim=\dimen146 -\MPnumerator=\count185 -\makeMPintoPDFobject=\count186 -\everyMPtoPDFconversion=\toks19 +\scratchcounter=\count193 +\scratchdimen=\dimen154 +\scratchbox=\box50 +\nofMPsegments=\count194 +\nofMParguments=\count195 +\everyMPshowfont=\toks23 +\MPscratchCnt=\count196 +\MPscratchDim=\dimen155 +\MPnumerator=\count197 +\makeMPintoPDFobject=\count198 +\everyMPtoPDFconversion=\toks24 ) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 @@ -140,14 +209,19 @@ Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e )) -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <12> on input line 16. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 16. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <6> on input line 16. - -Overfull \hbox (65.62482pt too wide) in paragraph at lines 16--20 +LaTeX Font Info: Trying to load font information for U+msa on input line 13. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 13. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +Overfull \hbox (65.62482pt too wide) in paragraph at lines 18--22 [][] [] @@ -156,20 +230,20 @@ Overfull \hbox (65.62482pt too wide) in paragraph at lines 16--20 {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (/home/binh/Data/PycharmProjects/pytexexam/out/exam1.aux) ) Here is how much of TeX's memory you used: - 1577 strings out of 482671 - 23066 string characters out of 5955619 - 252617 words of memory out of 5000000 - 16758 multiletter control sequences out of 15000+600000 - 536087 words of font info for 36 fonts, out of 8000000 for 9000 + 2698 strings out of 482671 + 35416 string characters out of 5955619 + 264411 words of memory out of 5000000 + 17844 multiletter control sequences out of 15000+600000 + 537996 words of font info for 45 fonts, out of 8000000 for 9000 264 hyphenation exceptions out of 8191 - 30i,9n,35p,200b,212s stack positions out of 5000i,500n,10000p,200000b,80000s + 30i,9n,35p,222b,220s stack positions out of 5000i,500n,10000p,200000b,80000s Output written on /home/binh/Data/PycharmProjects/pytexexam/out/exam1.pdf (1 pa -ge, 39070 bytes). +ge, 39688 bytes). PDF statistics: 24 PDF objects out of 1000 (max. 8388607) 16 compressed objects within 1 object stream diff --git a/out/exam1.pdf b/out/exam1.pdf index a6c709ecc78467276ce53ec3c7d0d535c9dc690a..3adea59f9f68f4dd8cec76d599cf07e17f7c2c15 100755 GIT binary patch delta 11678 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 ax*5B;dAXQdAh7YUad0D0P)I0ABK!|lR;}y+ delta 10988 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 CHMFb% literal 1642 zcmV-w29^0AiwFP!000001D#n*Z{s!)zUxPc%Pue}Ih%fpW!$(fI%A@ke&F8MwE^5M_)m}mRl0-|4bhf}eD#r$o* zP3JG!?rr{aT*ULw@5x(y+-7Cwya_n;56>hISj_z_#W7n24EAn@$7H$c=7K+JCU-y6 zYr32tUYBTl!pBBu>}H~3zu)92lVkiIED7Ldf+XE+@K;G(h3|?*^Z-h;=wFDQVaD}B8lkz>GwHZcT(AW<$}z3bBBirV${DMn z+Gyh#51>jRR` ziE|K^psi$zqJcTXDOzwugYKh+bOxO6qm|)cRA*k7z7brY|75UUt&!B~l8v@U)6%J` z^%MF>C@uAvS3O!%v;tI;?Sof?;P04)<*2jHJQ+0q$cTpFE&$n?&!rio=M)&$hXX?r zW(f`WxH?C9a1MT>b@pl7!vO~TqNVO5B-0u!8AG7{tN}8H!~hCQ=PDI5S_q2wOHgzT zxL^%T5xn8JGDq=78EGWJb0)aqHn6WtIkh@#3}N9~r$1vEv68{A9BEsW#X7!q2;q|vrV_|qWT=chYJ{E)Uo3x+w==e!o}jIl67 z*AR3`Ld^@~V}`N0Y(2u9G>N*#u! zLgPC?IebO+;W(ZEC4tyE(o0KRj!NRf4B!Q>%;{h{>&h+-##;m{24T@PEnmNV+@;=C zb?8O|Q?)m+DZZ%dVHESLm*FsDEt6sUh>#l=UwRlu+(qoq!}hBhrD!73tB~m^&xlNi z*gBnp!Yq#&muLVJA|@G4oS=PeWvKQH!^$iae2vF+ZnP%S##n3TE5g1V<)pcPja>3@ z#xzKZ=UDi7+4Z%`eW?h+mhvwygZZf8>$hKVED`GvWK6A`W2q}bM@~muCd2ltYUNyO zt7wv-_UB>yRkczyQR`L6bd+aAtwU^`TDh+cq$3%N3oTKvB(HMeP#ZL{a>*GAoH`8) zIxsY|a)m5{W=bp|Q1>*mVnu@W_y8U&Bx`79<&G(fuZB>q;Lr^XU%&l|V~JXaAfsw^ zQh~Zm;bSdTp+W4|)#|Lo>>)25W(Vxg!*-(9ihVMI?y2=Vkm)E-Pp!cLZ(vOqk`)Y7 zBOW~aQV>`aJ1&W21%R#20zEwDFRc5CWXo5zP(-q*7OYDxkszuV&kmeOR+JlP2yZbN zv7Th@0*@I2BOk09iva+Tbwo+~74Mdk?P|$kNCjwcjb!~mnj3SO$;Vs1)PSL zFRcD)%b2}7F9at5g$E-kuH6T4MbW(r0faOc0u7{`fog9AT62YNuLOGV_D+D{>q~(? zzPT0X str: + """Generate latex code""" question_str = "" for question in self.questions: question_str += (question.print_question_latex() + "\n\n") @@ -28,6 +30,7 @@ def get_latex_string(self) -> str: class LatexExamAnswer(LatexPaper): + """This class is used to create an answer keys""" def __init__(self): self.preamble = "" self.header = "" @@ -35,6 +38,7 @@ def __init__(self): self.footer = "" def get_latex_string(self) -> str: + """Generate latex code""" return jinja_env.get_template("answer.tex").render( user_preamble=self.preamble, exam_header=self.header, @@ -44,6 +48,7 @@ def get_latex_string(self) -> str: class LatexExamSolution(LatexPaper): + """Generate solution paper for this exam""" def __init__(self): self.preamble = "" self.header = "" @@ -52,6 +57,7 @@ def __init__(self): self.question_translation = "Question" def get_latex_string(self) -> str: + """Generate latex code""" solution_str = "" for question in self.questions: solution_str += (question.print_solution_latex() + "\n\n") diff --git a/pytexexam/latexexamutil.py b/pytexexam/latexexamutil.py index 4766bed..8725cec 100755 --- a/pytexexam/latexexamutil.py +++ b/pytexexam/latexexamutil.py @@ -3,7 +3,7 @@ def ams_math_package() -> str: """ - Returns the command lines needed to type math formula in latex + Returns the code needed to add in preamble to type math formula in latex """ return inspect.cleandoc(r""" \usepackage{amsmath} diff --git a/pytexexam/latexpaper.py b/pytexexam/latexpaper.py index 3eff8ee..9d33d58 100755 --- a/pytexexam/latexpaper.py +++ b/pytexexam/latexpaper.py @@ -2,14 +2,17 @@ class LatexPaper: + """This base class is used to export exam in tex and pdf file""" def get_latex_string(self) -> str: pass def export_tex_file(self, file_dir: str): + """Export to .tex file""" file = open(f"{file_dir}.tex", "w") file.write(self.get_latex_string()) file.close() def export_pdf_file(self, file_dir: str): + """Export to pdf file""" self.export_tex_file(file_dir) os.system(f"pdflatex {file_dir}.tex") diff --git a/pytexexam/question.py b/pytexexam/question.py index e83020a..e1cb1e0 100755 --- a/pytexexam/question.py +++ b/pytexexam/question.py @@ -44,9 +44,11 @@ def __get_answer_key() -> List[str]: return list(string.ascii_uppercase) def shuffle_answer(self): + """Shuffle answer list""" SystemRandom().shuffle(self.answers) def get_true_answer_key(self) -> str: + """Get answer key of true answer""" true_answer = "" for answer in self.answers: if answer.is_true_answer: @@ -54,6 +56,7 @@ def get_true_answer_key(self) -> str: return true_answer def print_question_latex(self) -> str: + """generate latex code for this question""" table_column = "" for i in range(0, self.answer_column): column_size = 1 / self.answer_column @@ -71,6 +74,7 @@ def print_question_latex(self) -> str: ) def print_solution_latex(self) -> str: + """Generate latex code to print question and solution""" return jinja_env.get_template("mcqsolution.tex").render( question=self.print_question_latex(), solution=self.solution diff --git a/setup.py b/setup.py index c022caa..f04b1a6 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='pytexexam', - version='1.4.3', + version='2.0.0', packages=['pytexexam'], include_package_data=True, url='https://github.com/vungocbinh2009/pytexexam', diff --git a/test/example.py b/test/example.py index 9498fba..81567f5 100755 --- a/test/example.py +++ b/test/example.py @@ -1,15 +1,20 @@ -from builder import LatexExamBuilder +import pytexexam.latexexamutil as util +from pytexexam import LatexExamBuilder, ExamExportType + builder = LatexExamBuilder() +builder.preamble = util.ams_math_package() builder.header = "This is a simple header" builder.footer = "This is a simple footer" +builder.export_type = ExamExportType.PDF builder.add_question( - "This is a simple question", - ["Answer 1", "Answer 2", "Answer 3", "Answer 4"], - "A", - 4, - "This is solution for this question", + question="This is a simple question", + answer=["Answer 1", "Answer 2", "Answer 3", "Answer 4"], + true_answer="A", + answer_column=4, + solution="This is solution for this question", ) + builder.create_exam("exam1") builder.create_answer("answer1") builder.create_solution("solution1")