I have a lot of tikzpicture elements in my document. I want all the elements to be centered automatically without writing \begin{center}...\end{center}. I found a solution to make a figure center by the following code:



% Solution 1 <--- Best for figures

% Solution 2 <--- does not work
% \makeatletter
% \g@addto@macro\@floatboxreset{\centering}
% \makeatother

% % Solution 3 --- works
% \let\origfigure\figure
% \let\endorigfigure\endfigure
% \renewenvironment{figure}[1][tbph]{%
%     \origfigure[#1]%
%     \centering
% }{%
%     \endorigfigure
% }


The first paragraph.

    \caption[Long caption]{Caption}

And the second.

        draw = blue,
        text = olive,
        fill = gray!30,
        minimum width = 5cm, 
        minimum height = 1cm] (r) at (0,0) {Rectangle};
\node[isosceles triangle,
    minimum size =3cm] (T) at (0,0) {};


However, my tikzpicture elements are not effected. How can I do that (to set all the tikzpictures to be centered automatically without using \begin{center}...\end{center} each time?

  • Looks like that there isn't any built in way, you can define your own environment that creates a centered tikzpicture.
    – user202729
    Dec 8, 2021 at 16:28

2 Answers 2


It seems likely that you may not want every tikzpicture to be centered. One option is to create a new environment:





An inline tikzpicture \begin{tikzpicture}\draw(0,0) node[fill, inner sep=3pt]{} to (1,0) node[fill, inner sep=3pt]{};\end{tikzpicture} 
should not be centered, using either begin/end notation or \tikz{\draw(0,0) node[fill, inner sep=3pt]{} to (1,0) node[fill, inner sep=3pt]{};} shortened notation. 
But sometimes \begin{centikz}\draw(0,0) node[fill, inner sep=3pt]{} to (1,0) node[fill, inner sep=3pt]{};\end{centikz} 
you want it that way.


enter image description here


You can centre all tikzpicture environments using

        \node {Test};


\BeforeBeginEnvironment{environment}{code before}


\AfterEndEnivronment{environment}{code after}

prepend and append code before and code after to \begin{environment} and \end{environment}. See the etoolbox documentation for more details.

Note that if you are using memoir or a late enough version of LaTeX you may not need the etoolbox package for this to work.

  • I am using memoir class. @Willoughby
    – mmr
    Dec 8, 2021 at 16:47
  • 2
    Clever solution. I have to dig into the etoolbox package, it seems to be very useful. +1
    – SebGlav
    Dec 8, 2021 at 17:12
  • @Willoughboy Nice, +1. You tickled my curiosity. Question to follow (for you?) with Beamer.
    – JeT
    Dec 8, 2021 at 20:21
  • @Willoughboy here it is
    – JeT
    Dec 8, 2021 at 20:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .