Я пытаюсь создать программу, которая создаст файл LaTex (.tex) с преамбулой в нем, и быстрее, чем некоторые разделы.Я определил свою функцию thepreamble (title, subject) так, чтобы входные данные были созданы в строке, что видно из моего кода ниже.
# -*- coding: utf-8 -*-
import io
def thepreamble(title, subject):
global preamble
preamble = r'''\documentclass[a4paper, 12pt]{extarticle}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[english, danish]{babel}
\usepackage{fancyhdr}
\usepackage[dvipsnames]{xcolor}
\usepackage{mathtools}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{titlesec}
\usepackage[left=0.5in, right=0.5in, top=0.8in, bottom=0.8in]{geometry}
\usepackage{lipsum}
\usepackage[breaklinks, colorlinks=true,linkcolor=NavyBlue, citecolor=blue, urlcolor=Blue, linktoc=all]{hyperref}
\usepackage[utf8x]{inputenc}
\usepackage{titlesec}
\usepackage{fix-cm}
\usepackage{titletoc}
\usepackage{tocloft}
\usepackage{setspace}
\usepackage[all]{hypcap}
\usepackage{tikz, pgfplots}
\usetikzlibrary{calc}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usetikzlibrary{positioning}
\usepackage{tikzrput}
\usetikzlibrary{arrows.meta}
\usepackage[labelfont=bf]{caption}
\usepackage[hang, flushmargin]{footmisc}
\usepackage{footnotebackref}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[R]{\textbf \thepage}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{2pt}
\renewcommand{\footrule}{\hbox to\headwidth{\color{NavyBlue}\leaders\hrule height \footrulewidth\hfill}}
\newcommand{\dl}[1]{\underline{\underline{#1}}}
\setcounter{tocdepth}{2}
\setcounter{secnumdepth}{0}
\begin{document}
\begin{titlepage}
\begin{center}
\vspace*{30ex}
{\fontsize{38}{0}\selectfont \bfseries \fontfamily{put}\selectfont \color{NavyBlue} '''+ str(title)+'''} \\
[3ex]
{\fontsize{18}{0}\selectfont \bfseries \fontfamily{put}\selectfont \color{NavyBlue} ('''+str(subject)+ ''')}\\
[14ex]
{ \fontsize{15}{0}\selectfont Casper Juul Lorentzen} \\
[3ex]
{\large \scshape 1.z} \\
[2ex]
{\large \scshape 2018}\\
\vspace{\fill}
\includegraphics[scale=0.45]{C:/LaTeX/Next.png} \\
[4mm]
\small{\bfseries Albertslund Gymnasium \& HF} \\
\end{center}
\end{titlepage}
\renewcommand\contentsname{Indhold \vspace{3ex}}
\tableofcontents
\thispagestyle{empty}
\newpage
\setcounter{page}{1}
'''
return preamble
def sections(numsec, numsubsec):
numbers = []
numbers.extend(numsubsec)
global tasks
tasks = []
print("")
#Brug præfikset 'r' foran unicodes
print("")
for n,i in zip(range(1, numsec+1),range(0,numsec)):
print("")
opgaver = "\section{Opgave "+str(n)+"}"
print(opgaver)
print("")
tasks.append(opgaver)
for x in range(int(numsubsec[i])):
print("\subsection{}")
print("")
return tasks
def runprogram():
encoding ='utf8'
titlefile = input("Title (file): ")
title = input("Title of document: ")
subject = input("Subject: ")
numsec = int(input("How many sections? "))
filename = "C:\\Users\\Casper\\Documents\\LaTeX\\fire.tex"
while True:
numsubsec = input("How many subsections?")
while len(numsubsec) !=numsec:
print("")
numsubsec =input("Error; input must be of "+ str(numsec) + " digits ")
try:
with io.open(filename.replace('fire.tex',titlefile+".tex"), 'w', encoding=encoding) as f:
f.write(unicode_thepreamble(title, subject))
f.close()
#sections(numsec, numsubsec)
break
except:
print("Error")
runprogram()
Всякий раз, когда я запускаю программу, он создает новый файл .tex с именем
titlefile = input("Title (file): ")
. Как видите, я определил преамбулу как текст с символами Юникода в нем.И когда я запускаю программу, она записывает почти всю строку преамбулы в текстовом документе, но обрезает ее часть и создает странный символ, например: документ tex создан
Я назвал заголовок «stackoverflow» и тему «проблема с питоном», и это прекрасно работает.Но то, что должно быть «\ renewcommand», находится в документе «enewcommand».Я не знаю, как это исправить.Я просто хочу именно то, что говорится в моих строках преамбулы.