def dumps(self): # Clear the old data self.clear() assessment = self.assessment if hasattr(self.assessment, 'course'): course = self.assessment.course else: course = None if course: # Create left header with self.create(Head('L')): self.append(course.name) self.append(LineBreak()) self.append(SmallText(course.kind)) self.append(self.padding) # Create center header with self.create(Head('C')): self.append(NoEscape(r'\ifbool{instructorKey}{')) self.append(SmallText(bold('FOR INSTRUCTORS ONLY'))) self.append(LineBreak()) self.append(SmallText(bold(f'(Max. of {assessment.maxpoints} points)'))) self.append(NoEscape(r'}{}')) self.append(self.padding) # Create right header with self.create(Head('R')): self.append(f'{assessment.kind} {assessment.number}.{assessment.version} - {assessment.fullpoints} Points') self.append(LineBreak()) self.append(SmallText(f'Assessing Period: {assessment.period}')) self.append(self.padding) if course: # Create left footer with self.create(Foot('L')): self.append(course.term) # Create center footer with self.create(Foot('C')): now = datetime.now().strftime('%Y%m%d%H%M') self.append(FootnoteText(now)) # Create right footer with self.create(Foot('R')): self.append(simple_page_number()) return super().dumps()
def format_recipe(recipe, display_opts): """ Return the recipe in a paragraph in a samepage """ recipe_page = SamepageEnvironment() name_line = LargeText(recipe.name) if display_opts.origin and 'schubar original' in recipe.origin.lower(): name_line.append(superscript('*')) #name_line.append(superscript(NoEscape('\dag'))) if display_opts.prices and recipe.max_cost: price = util.calculate_price(recipe.max_cost, display_opts.markup) name_line.append(DotFill()) name_line.append(superscript('$')) name_line.append(price) name_line.append('\n') recipe_page.append(name_line) if display_opts.prep_line: recipe_page.append( FootnoteText(recipe.prep_line(extended=True, caps=False) + '\n')) if display_opts.info and recipe.info: recipe_page.append(SmallText(italic(recipe.info + '\n'))) for item in recipe.ingredients: recipe_page.append(item.str() + '\n') if display_opts.variants: for variant in recipe.variants: recipe_page.append(HorizontalSpace('8pt')) recipe_page.append(SmallText(italic(variant + '\n'))) if display_opts.examples and recipe.examples: # and recipe.name != 'The Cocktail': for e in recipe.examples: recipe_page.append( FootnoteText( "${cost:.2f} | {abv:.2f}% | {std_drinks:.2f} | {kinds}\n". format(**e._asdict()))) recipe_page.append(Command('par')) return recipe_page
def test_basic(): # Tests the basic commands and environments # Basic commands new_page = NewPage() repr(new_page) new_line = NewLine() repr(new_line) line_break = LineBreak() repr(line_break) h_fill = HFill() repr(h_fill) # Basic environments huge = HugeText("Huge") huge.append("Huge 2") repr(huge) large = LargeText("Large") large.append("Large 2") repr(large) medium = MediumText("Medium") medium.append("Medium 2") repr(medium) small = SmallText("Small") small.append("Small 2") repr(small) footnote = FootnoteText("Footnote") footnote.append("Footnote 2") repr(footnote) text_color = TextColor("green", "GreenText") text_color.append("More Green Text") repr(text_color)
def __init__(self, message=r'Please continue on the next page.'): r""" Parameters ---------- message: str The message to display before starting a new page. """ self.message = message super().__init__(data=[ #NewLine(), SmallText(bold(self.message)), NewPage(), ])
def add_title_page(doc: Document, camp: Camp): # packages used for this page doc.packages.append(Package('datetime')) doc.packages.append(Package('graphicx')) doc.packages.append(Package('xcolor')) # create content doc.preamble.append( Command( 'title', NoEscape( r'\Huge \textbf{' + camp.get_camp_name() + r'} \\ \vspace{1.65cm} \Large \textbf{Handbuch Lagerküche}' r'\\ \vspace{8cm}'))) doc.preamble.append( Command('author', NoEscape(r'\normalsize ' + camp.get_full_author_name()))) doc.preamble.append( Command('date', NoEscape(r'\normalsize Version vom \today'))) # no page numbers doc.append(Command('clearpage')) doc.append(Command('maketitle')) # add title doc.append(Command('thispagestyle', arguments='empty')) doc.append(Command('vfill')) doc.append(Command('noindent')) doc.append(NoEscape('{')) doc.append(Command('color', arguments='gray')) doc.append(Subsubsection('Haftungsausschluss', numbering=False)) doc.append( SmallText( 'Dieses Dokument wurde automatisch erstellt. Obwohl uns Qualität und Richtigkeit sehr am ' 'Herzen liegt, können wir Fehler nie ganz ausschliessen. eMeal – Menüplanung haftet nicht ' 'für Schäden, die im Zusammenhang mit diesem Export entstanden sind. Bitte kontrolliere ' 'diesen Export vor dem Lager auf Vollständigkeit.')) doc.append(NoEscape('}'))
doc.append(HorizontalSpace("250pt")) with doc.create(Tabular(table_spec="|l r|", row_height=1.8)) as data_table: data_table.add_hline() data_table.add_row( [MediumText(bold(lorem(3))), MediumText(bold("XXXXXXXXXXXXXX"))]) data_table.add_hline() doc.append(HorizontalSpace("160pt")) with doc.create(Tabular(table_spec="|c|", row_height=1.8)) as date_table: date_table.add_hline() date_table.add_row((FootnoteText(lorem(1)), )) date_table.add_hline() date_table.add_row((SmallText(bold(str(datetime.now())[0:10])), )) date_table.add_hline() doc.append(LineBreak()) doc.append(LineBreak()) doc.append(LineBreak()) # Name - Register - Period with doc.create(Tabular(table_spec="|m{100cm}|")) as name_table: name_table.add_hline() name_table.add_row((MultiColumn(1, align="|c|", data=FootnoteText(lorem(8))), )) name_table.add_hline() name_table.add_row((MultiColumn(1,
def seismicity(doc, year1, month1, t, lc, reg, pac, car, volc, imp, sub_list=[["1"], ["1"], ["0"], ["0"]]): """Add seismicity section to the document. :param doc: the document :type doc: :class:`pylatex.document.Document` instance :param fun_map: name of the functioning map :type doc: :string: """ print sub_list doc.append(NewPage()) sec_sismicicdad = open(ruta + "bulletfiles/seccion_sismicidad_mes.txt", "r").read() #doc.append(NoEscape(r"\chapterimage{"+ruta+"bulletfiles/sgc_blanco2.jpg}")) doc.append( NoEscape(r"\chapter{SISMICIDAD \textcolor{sgc2}{DE %s} \\DE %s}" % (month1.upper(), year1))) # agregando texto desde archivo doc.append(NoEscape(r"\noindent ")) doc.append(sec_sismicicdad % (month1, t, lc, reg, pac, car, volc, imp)) with doc.create(Enumerate()) as enum: enum.add_item("El sismo tiene una profundidad menor a 120 km y \ su magnitud (ML) es mayor o igual a 4.0 en la escala de \ Richter o su magnitud de momento (Mw) es mayor o igual 4.0.") enum.add_item("El sismo tiene una profundidad mayor o igual \ a 120 km y su magnitud (ML) es mayor o igual a 5.0 en la \ escala de Richter o su magnitud de momento (Mw) es mayor o igual 5.0.") enum.add_item("El sismo es reportado como sentido cerca al epicentro, \ sin importar su magnitud o su profundidad.") with doc.create(Center()): doc.append(NoEscape(r"\sffamily\textcolor{ocre}{Convenciones}")) with doc.create(Tabular('ll')) as table: table.add_row((bold('FECHA'), "Año Mes Día")) table.add_row((bold('H:M:S'), SmallText('Hora:Minuto:Segundo. Hora del \ evento en tiempo universal (UT).'))) table.add_row(( bold(''), SmallText( "Para la hora local en el territorio Colombiano se restan 5 horas." ))) table.add_row((bold(''), SmallText("a la hora UT."))) table.add_row((bold('LAT'), SmallText("Latitud en grados."))) table.add_row((bold('LON'), SmallText("Longitud en grados."))) table.add_row((bold('Z'), SmallText("Profundidad en kilometros."))) table.add_row((bold('M'), "Magnitud del evento.")) table.add_row((bold('UBICACION'), SmallText("Epicentro del evento."))) # ======================================================================= # tabla de sismicidad destacada # ======================================================================= if sub_list[0][0] == "1": # tabla con eventos destacados doc.append(NoEscape(r"\newpage")) doc.append( NoEscape(r"\section{Tabla de sismicidad destacada %s de %s}" % (month1, year1))) doc.append(NoEscape(r"\vspace{0.8cm}")) data_list = sc_table("sc_destacados.out") with doc.create( LongTabu( "X[1.3,c] X[1.2,c] X[c] X[1.1,c] X[0.4,c] X[0.4,c] X[4,l]", row_height=1)) as data_table: data_table.add_row( NoEscape(r"\scriptsize\sffamily\bfseries FECHA"), NoEscape(r"\scriptsize\sffamily\bfseries H:M:S"), NoEscape(r"\scriptsize\sffamily\bfseries LAT"), NoEscape(r"\scriptsize\sffamily\bfseries LON"), NoEscape(r"\scriptsize\sffamily\bfseries Z"), NoEscape(r"\scriptsize\sffamily\bfseries M"), NoEscape(r"\scriptsize\sffamily\bfseries UBICACION"), color="sgc2") #data_table.add_empty_row() data_table.end_table_header() # para cada elemento en la lista list_to_table (lista con info de destacados) for i in range(len(data_list)): if (i % 2) == 0: data_table.add_row(Command("tiny", data_list[i][0]), Command("tiny", data_list[i][1]), Command("tiny", data_list[i][2]), Command("tiny", data_list[i][3]), Command("tiny", data_list[i][4]), Command("tiny", data_list[i][5]), Command("tiny", data_list[i][6]), color="sgc2!20") else: data_table.add_row(Command("tiny", data_list[i][0]), Command("tiny", data_list[i][1]), Command("tiny", data_list[i][2]), Command("tiny", data_list[i][3]), Command("tiny", data_list[i][4]), Command("tiny", data_list[i][5]), Command("tiny", data_list[i][6])) doc.append( NoEscape(r"\caption{Eventos destacados durante %s de %s}" % (month1, year1))) # ======================================================================= # mapa de sismicidad destacada # ======================================================================= if sub_list[1][0] == "1": file_inspector(sub_list[1][1]) doc.append(NoEscape(r"\begin{figure}")) doc.append(NoEscape(r"\begin{minipage}{\textwidth}")) doc.append( NoEscape(r"\section{Mapa de sismicidad destacada %s de %s}" % (month1, year1))) # doc.append(NoEscape(r"\vspace{-1.5cm}")) doc.append(NoEscape(r"\begin{center}")) doc.append( NoEscape(r"\includegraphics[scale=0.18]{%s}\\" % sub_list[1][1])) doc.append( NoEscape(r"\caption{\small{Eventos destacados durante %s de %s}}" % (month1, year1))) doc.append(NoEscape(r"\end{center}")) # doc.append(NoEscape(r"\vspace{-1.5cm}")) add_text(sub_list[1][2], doc) doc.append(NoEscape(r"\end{minipage}")) doc.append(NoEscape(r"\end{figure}")) # ======================================================================= # tabla de sismicidad mensual # ======================================================================= if sub_list[2][0] == "1": doc.append(NoEscape(r"\newpage")) doc.append( NoEscape(r"\section{Tabla de sismicidad mensual %s de %s}" % (month1, year1))) doc.append(NoEscape(r"\vspace{0.8cm}")) data_list = sc_table("sc_mensual.out") with doc.create( LongTabu( "X[1.3,c] X[1.2,c] X[c] X[1.1,c] X[0.4,c] X[0.4,c] X[4,l]", row_height=1)) as data_table: data_table.add_row( NoEscape(r"\scriptsize\sffamily\bfseries FECHA"), NoEscape(r"\scriptsize\sffamily\bfseries H:M:S"), NoEscape(r"\scriptsize\sffamily\bfseries LAT"), NoEscape(r"\scriptsize\sffamily\bfseries LON"), NoEscape(r"\scriptsize\sffamily\bfseries Z"), NoEscape(r"\scriptsize\sffamily\bfseries M"), NoEscape(r"\scriptsize\sffamily\bfseries UBICACION"), color="sgc2") #data_table.add_empty_row() data_table.end_table_header() # para cada elemento en la lista list_to_table (lista con info de destacados) for i in range(len(data_list)): if (i % 2) == 0: data_table.add_row(Command("tiny", data_list[i][0]), Command("tiny", data_list[i][1]), Command("tiny", data_list[i][2]), Command("tiny", data_list[i][3]), Command("tiny", data_list[i][4]), Command("tiny", data_list[i][5]), Command("tiny", data_list[i][6]), color="sgc2!20") else: data_table.add_row(Command("tiny", data_list[i][0]), Command("tiny", data_list[i][1]), Command("tiny", data_list[i][2]), Command("tiny", data_list[i][3]), Command("tiny", data_list[i][4]), Command("tiny", data_list[i][5]), Command("tiny", data_list[i][6]), color="white") doc.append( NoEscape(r"\caption{Eventos durante %s de %s}" % (month1, year1))) # ======================================================================= # mapa de sismicidad mensual # ======================================================================= if sub_list[3][0] == "1": print sub_list[3][1] print sub_list[3][2] file_inspector(sub_list[3][1]) doc.append(NoEscape(r"\begin{figure}")) doc.append(NoEscape(r"\begin{minipage}{\textwidth}")) doc.append( NoEscape(r"\section{Mapa de sismicidad mensual %s de %s}" % (month1, year1))) doc.append(NoEscape(r"\begin{center}")) # doc.append(NoEscape(r"\vspace{-1.5cm}")) doc.append( NoEscape(r"\includegraphics[scale=0.18]{%s}" % sub_list[3][1])) doc.append( NoEscape(r"\caption{\small{Eventos durante %s de %s}}" % (month1, year1))) doc.append(NoEscape(r"\end{center}")) # doc.append(NoEscape(r"\vspace{-1.5cm}")) add_text(sub_list[3][2], doc) doc.append(NoEscape(r"\end{minipage}")) doc.append(NoEscape(r"\end{figure}"))
with page.create(TextBlock(100, 0, 0)): page.append("**** Ten Thousand Dollars") with page.create(TextBlock(100, 0, 30)): page.append("COMPANY NAME") page.append("\nSTREET, ADDRESS") page.append("\nCITY, POSTAL CODE") with page.create(TextBlock(100, 150, 40)): page.append(HugeText(bold("VOID"))) with page.create(TextBlock(80, 150, 0)): page.append("DATE") page.append(MediumText(bold("2016 06 07\n"))) page.append(HorizontalSpace("10mm")) page.append(SmallText("Y/A M/M D/J")) with page.create(TextBlock(70, 150, 30)): page.append(MediumText(bold("$***** 10,000.00"))) page.append(VerticalSpace("100mm")) doc.generate_pdf("textblock", clean_tex=False) """ Asked for 1 installation when I ran the code """ """ rishikesh agrawani@DESKTOP-8AATOO4 MINGW64 /d/projects/Python/PyLaTex (master) $ cd 17_textblock_example/ rishikesh agrawani@DESKTOP-8AATOO4 MINGW64 /d/projects/Python/PyLaTex/17_textblock_example (master)
def portada(Diccionario, eficiencia,T_Hornilla): global doc doc = Document() geometry_options = {"tmargin": "4cm", "rmargin": "2cm", "lmargin": "4cm", "bmargin": "3cm"} doc = Document(geometry_options=geometry_options) doc.packages.append(Package('babel', options=['spanish'])) doc.packages.append(Package('background', options=['pages=all'])) doc.packages.append(NoEscape('\\backgroundsetup{placement=center,\n angle=0, scale=1, contents={\includegraphics{Membrete.pdf}}, opacity=1}\n')) with doc.create(Center()) as centered: centered.append(TextColor('white','HH')) for i in range(10): centered.append(LineBreak()) centered.append(HugeText('PROPUESTA DE VALOR PARA LA CONSTRUCCIÓN DE UNA HORNILLA ')) centered.append(LineBreak()) centered.append(SmallText('(Generado por HornillAPP)')) for i in range(8): centered.append(LineBreak()) with doc.create(Figure(position='h!')) as imagesRow1: with doc.create(SubFigure( position='b', width=NoEscape(r'1\linewidth'))) as left_imagesRow1: left_imagesRow1.add_image('IconoAPP.png') imagesRow1.append(LineBreak()) with doc.create(Center()) as centered: centered.append(TextColor('white','HH')) for i in range(8): centered.append(LineBreak()) #centered.append(VerticalSpace('50')) centered.append(LargeText('Presentado por: AGROSAVIA')) centered.append(LineBreak()) centered.append(SmallText('(Corporación Colombiana de Investigación Agropecuaria)')) doc.append(NewPage()) with doc.create(MediumText(' ')) as tlg: tlg.append(TextColor('white','HH')) tlg.append(LineBreak()) tlg.append('Bogotá D.C., ') tlg.append(Command(' ',NoEscape('\\today'))) tlg.append('\n \n') #Salto de línea en parráfo tlg.append(LineBreak()) #Salto de línea en parráfo tlg.append('\nSeñor (es):') tlg.append('\n'+str(Diccionario['Nombre de usuario'])) if(str(Diccionario['Departamento'])=='--'): tlg.append('\n'+str(Diccionario['Pais'])+'.') else: tlg.append('\n'+str(Diccionario['Ciudad'])+', '+str(Diccionario['Departamento'])+'.') tlg.append('\n \n') #Salto de línea en parráfo tlg.append('\nApreciado(s) productor(es):') tlg.append('\n \n') #Salto de línea en parráfo Parrafo= ('Con base en la información suministrada, está aplicación propone (ver Sección 1) la construcción de una hornilla '+ T_Hornilla+' con capacidad de '+ str(Diccionario['Capacidad estimada de la hornilla']) +' kg/h'+' (la eficiencia estimada de la hornilla es del '+ str(round(Diccionario['Eficiencia de la hornilla']))+'%) '+'; adecuada para el procesamiento de hasta '+ str(Diccionario['Área cosechada al mes'])+ ' ha'+' de caña, con una producción de panela '+ str(round(float(Diccionario['Producción de panela por molienda [t]'])))+ ' t por molienda y un periodo vegetativo de '+ str(Diccionario['Periodo vegetativo'])+' meses. Teniendo en cuenta que'+ ' se realizan '+str(Diccionario['Número de moliendas al año'])+' moliendas al año se estableció una jornada laboral de '+ str(Diccionario['Días de trabajo de la hornilla por semana'])+ ' días a la semana de '+str(Diccionario['Horas de trabajo de la hornilla por día'])+ ' horas laborables cada una.'+ '\n Además, la aplicación estima que para garantizar una operación apropiada de la hornilla '+ ' se requiere de un área disponible de al menos '+str(round(Diccionario['Capacidad estimada de la hornilla']*4.3))+' m²' ) tlg.append(Parrafo) Parrafo= (', cuya productividad puede aumentar al incorporar el sistema de recuperación de calor (hasta '+str(round(Diccionario['Capacidad estimada de la hornilla']+25))+' kg/h) como se muestra en las tablas del análisis financiero y al final del informe.' +' No obstante, la corporación ofrece los siguientes servicios de asistencia técnica para ajustar los valores provistos en esta propuesta de valor:' ) tlg.append(Parrafo) with tlg.create(Itemize()) as itemize: itemize.add_item('Estudio detallado para la construcción e instalación de la hornilla.') itemize.add_item('Al menos tres visitas técnicas de dos funcionarios de AGROSAVIA para la puesta en marcha y '+ 'capacitación de los operarios en el manejo de la hornilla y en la producción de panela '+ 'saborizada, granulada o moldeada en presentación pastilla de chocolate.') itemize.add_item('Entrega de un ejemplar de la guía tecnológica para el manejo integral del sistema '+ 'productivo de la caña panelera y una para el mantenimiento de la hornilla.') Parrafo= ('Cualquier inquietud AGROSAVIA está presta a atenderla.\n'+ 'Cordial saludo.\n'+ '\n \n \n'+ 'AGROSAVIA (Corporación colombiana de investigación agropecuaria)') tlg.append(Parrafo) Parrafo= ('\n \n Nota: Está propuesta de valor se basa en condiciones del terreno ideales y estacionarias, por lo que, '+ 'AGROSAVIA no se hace responsable de la reproducción total o parcial del material aquí suministrado sin una aprobación '+ 'corporativa.') tlg.append(Parrafo) doc.append(NewPage()) with doc.create(MediumText(' ')) as tlg: tlg.append(LargeText(bold('Contenido'))) with tlg.create(Itemize()) as itemize: itemize.add_item('Sección 1') with itemize.create(Itemize()) as item: item.add_item('Información del usuario.') item.add_item('Características de la caña sembrada.') item.add_item('Características del molino.') item.add_item('Consideraciones generales para el manejo de la hornilla.') item.add_item('Análisis financiero.') itemize.add_item('Sección 2') with itemize.create(Itemize()) as item: item.add_item('Diagramas mecánicos de la hornilla.') item.add_item('Diagramas mecánicos de la camára.') item.add_item('Diagramas mecánicos de la chimenea.') item.add_item('Diagramas mecánicos del ducto.') item.add_item('Diagramas mecánicos de la hornilla con recuperador de calor.') doc.append(NewPage()) #PORTADA PARA LA SECCIÓN 1 with doc.create(Center()) as centered: centered.append(TextColor('white','HH')) for i in range(15): centered.append(LineBreak()) centered.append(HugeText('SECCIÓN 1:')) centered.append(LineBreak()) centered.append(HugeText('INFORMACIÓN TÉCNICA Y FINANCIERA')) doc.append(NewPage())