User Tools

Site Tools


latex:tikz

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
latex:tikz [2022/03/27 16:07] iwnlatex:tikz [2022/12/02 15:40] – [For-loops: Pseudorapidity 𝜂 and polar angle 𝜃] iwn
Line 9: Line 9:
   * The examples below and many more are also available on [[https://github.com/IzaakWN/CodeSnippets/tree/master/LaTeX/TikZ|GitHub]] and [[https://ineuteli.web.cern.ch/ineuteli/diagrams/|this gallery page]].   * The examples below and many more are also available on [[https://github.com/IzaakWN/CodeSnippets/tree/master/LaTeX/TikZ|GitHub]] and [[https://ineuteli.web.cern.ch/ineuteli/diagrams/|this gallery page]].
   * [[http://pgf.sourceforge.net/pgf_CVS.pdf|Official TikZ & PGF manual]].   * [[http://pgf.sourceforge.net/pgf_CVS.pdf|Official TikZ & PGF manual]].
 +  * [[http://tug.ctan.org/info/visualtikz/VisualTikZ.pdf|Visual Tikz]]: an extensive cheat sheet with TikZ's many features and commands. 
   * For Feynman diagrams, please see [[latex:feynman|this page]].   * For Feynman diagrams, please see [[latex:feynman|this page]].
  
Line 388: Line 389:
 </WRAP></WRAP> </WRAP></WRAP>
  
 +Using a for-loop over two variables:
 +<WRAP group><WRAP half column lo 65%>
 +<code latex>
 +\begin{tikzpicture}[scale=3]
 +  
 +  % limits
 +  \def\R{1.2} % radius/length of lines
 +  
 +  % axis labels
 +  \node[scale=1,below left=1] at (0,\R) {$y$}; % y axis
 +  \node[scale=1,below left=1] at (\R,0) {$z$}; % z axis
 +  
 +  % lines
 +  \foreach \t/\e in {90/0,60/0.55,45/0.88,30/1.32,10/2.43,0/+\infty}{ % loop over theta/eta
 +    \pgfkeys{/pgf/number format/precision=2}
 +    \draw[->,black!60!red,thick,line cap=round] % eta lines
 +      (0,0) -- (\t:\R) node[anchor=180+\t,black] {$\eta=\e$}
 +      node[black,pos=0.7,fill=white,scale=0.8,inner sep=1.5pt] {$\theta=\t^\circ$};
 +  }
 +  
 +\end{tikzpicture}
 +</code>
 +</WRAP><WRAP half column 30%>
 +\\
 +{{ latex:theta-eta.png ? 2000 }}
 +\\
 +</WRAP></WRAP>
  
 +Using for-loop and calculation + rounding:
 <WRAP group><WRAP half column lo 65%> <WRAP group><WRAP half column lo 65%>
 <code latex> <code latex>
Line 394: Line 423:
      
   % limits   % limits
-  \def\R{1.2}+  \def\R{1.2} % radius/length of lines
      
   % axis labels   % axis labels
-  \node[scale=0.9,below=5pt,left=2pt] at (0,\R) {$y$}; +  \node[scale=1,below left=1] at (0,\R) {$y$}; % y axis 
-  \node[scale=0.9,left=5pt,below=2pt] at (\R,0) {$z$};+  \node[scale=1,below left=1] at (\R,0) {$z$}; % z axis
      
   % lines   % lines
-  \foreach \t/\e in {90/0,60/0.55,45/0.88,30/1.32,10/2.44,0/\infty}{ +  \pgfkeys{/pgf/number format/precision=2} % two decimals 
-    \draw[->,black!60!red,thick] +  \foreach \t in {90,60,45,30,10,0}{ % loop over theta 
-      (0,0) -- ({\R*cos(\t)},{\R*sin(\t)}) +    \ifnum \t = 0 
-      node[anchor=180+\t,black] {$\eta=\e$}; +      \def\e{+\infty} % infinity symbol 
-    \node[fill=white,scale=0.8] at ({0.8*cos(\t)},{0.8*sin(\t)}) {$\theta=\t^\circ$};+    \else 
 +      \pgfmathparse{-ln(tan(\t/2))} % pseudorapidity 
 +      %\pgfmathroundto{\pgfmathresult} % round without traling zeroes 
 +      \pgfmathroundtozerofill{\pgfmathresult} % round with trailing zeroes 
 +      \pgfmathsetmacro\e{\t==90?0:\pgfmathresult} % no trailing zeroes for theta = 0 
 +    \fi 
 +    \draw[->,black!60!red,thick,line cap=round% eta lines 
 +      (0,0) -- (\t:\R) node[anchor=180+\t,black] {$\eta=\e$} 
 +      node[black,pos=0.7,fill=white,scale=0.8,inner sep=1.5pt] {$\theta=\t^\circ$};
   }   }
-    +  
 \end{tikzpicture} \end{tikzpicture}
 </code> </code>
Line 799: Line 836:
  ===== 3D axis with spherical coordinates & CMS coordinate system =====  ===== 3D axis with spherical coordinates & CMS coordinate system =====
  
-This piece of code is based on [[https://tex.stackexchange.com/questions/116206/how-to-draw-and-annotate-a-spherical-coordinate-system|this StackExchange thread]]. It is a simple exercise in making axes and labeling angles in 3D. ''\usepackage{tikz-3dplot}'' needs to be included. The full code can be found [[https://tikz.net/axis3d_cms/|here]].+This piece of code is based on [[https://tex.stackexchange.com/questions/116206/how-to-draw-and-annotate-a-spherical-coordinate-system|this StackExchange thread]]. It is a simple exercise in making axes and labeling angles in 3D. ''\usepackage{tikz-3dplot}'' needs to be included. The full code can be found [[https://tikz.net/axis3d/|here]].
  
 <WRAP group><WRAP half column lo 65%> <WRAP group><WRAP half column lo 65%>
Line 837: Line 874:
  
  
-An example of rotating the 3D axes with the CMS conventional coordinate system by using the option ''rotate around x=<//angle//>'' and more ([[latex:example_spherical_coordinates|full code]]):+An example of rotating the 3D axes with the CMS conventional coordinate system by using the option ''rotate around x=<//angle//>'' and more ([[https://tikz.net/axis3d_cms|full code]]):
  
 <WRAP group><WRAP third column 20%> <WRAP group><WRAP third column 20%>
latex/tikz.txt · Last modified: 2022/12/02 15:42 by iwn