I have been using Pylatex package in Python to generate reports in pdf format, but I got a problem in how to set the position of subpictures at a report without to use the full size width of page (using small subpictures centered).
Any guess about?
I try to use "placement='c'" and nothing…
# the picture to plot
[![kitten][1]][1]
# my code
import os
from pylatex import Document, PageStyle, NewPage, SubFigure, Figure, Section
from pylatex.utils import NoEscape
def generate_pdf_report(imageFilename):
geometry_options = { "head": "30pt",
"margin": "0.3in",
"top": "0.2in",
"bottom": "0.4in",
"includeheadfoot": True}
doc = Document(geometry_options=geometry_options)
first_page = PageStyle("firstpage")
doc.preamble.append(first_page)
doc.change_document_style("firstpage")
with doc.create(Section('Plotting multiple figures')):
doc.append("How to set the pictures at center of page without change the width?")
with doc.create(Figure(position='h!')) as imagesRow1:
with doc.create(
SubFigure(position='c', width=NoEscape(r'0.33\linewidth'))) as left_imagesRow1:
left_imagesRow1.add_image(imageFilename,placement='c', width=NoEscape(r'0.95\linewidth'))
left_imagesRow1.add_caption("img 1")
with doc.create(
SubFigure(position='c', width=NoEscape(r'0.33\linewidth'))) as right_imagesRow1:
right_imagesRow1.add_image(imageFilename,placement='c', width=NoEscape(r'0.95\linewidth'))
right_imagesRow1.add_caption("img 2")
with doc.create(Figure(position='h!')) as imagesRow2:
with doc.create(
SubFigure(position='c', width=NoEscape(r'0.33\linewidth'))) as left_imagesRow2:
left_imagesRow2.add_image(imageFilename,placement='c', width=NoEscape(r'0.95\linewidth'))
left_imagesRow2.add_caption("img 3")
with doc.create(
SubFigure(position='c', width=NoEscape(r'0.33\linewidth'))) as right_imagesRow2:
right_imagesRow2.add_image(imageFilename, placement='c', width=NoEscape(r'0.95\linewidth'))
right_imagesRow2.add_caption("img 4")
imagesRow2.add_caption("Setting the subpictures at center")
doc.append(NewPage())
doc.generate_pdf("test_image_positions", compiler="pdflatex", clean=True, clean_tex=False)
imageFilename = os.path.join(os.getcwd(),"kitten.jpg")
generate_pdf_report( imageFilename)
#
The result is the subpictures on the left side of document.
Best Answer
The
position
for asubfigure
is not related to horizontal positioning, but vertical positioning. It determines how thesubfigure
is placed on the baseline.What you should do instead is to import
Command
frompylatex
, and then addat the start of each figure.
In addition you should remove
placement='c'
from the image inclusion, which doesn't do anything, except adding ac
to your document.