如何在 LaTeX 中制作齿轮?

如何在 LaTeX 中制作齿轮?

我想知道有什么好方法可以在 LaTeX 中。基本上,我想要用它作为章节标题。所以基本上它会像这样:

cog chapter # Chapter name

实现这一目标的最佳方法是什么?我最好使用图像还是自己制作图像?

非常感谢您抽出时间!

编辑:我按照评论的建议做了,但是使用 很难将装备实现到章节标题中titlesec。这是 MWE:

\documentclass[12pt]{memoir}

\usepackage{tikz}
\usepackage{titlesec}


% #1 number of teeths
% #2 radius intern
% #3 radius extern
% #4 angle from start to end of the first arc
% #5 angle to decale the second arc from the first 

\newcommand{\gear}[5]{%
\foreach \i in {1,...,#1} {%
  [rotate=(\i-1)*360/#1]  (0:#2)  arc (0:#4:#2) {[rounded corners=1.5pt]
             -- (#4+#5:#3)  arc (#4+#5:360/#1-#5:#3)} --  (360/#1:#2)
}}  

\titleformat{\chapter}{\Huge\bfseries}{\usebox{\gear{18}{0.5}{0.4}{10}{2}}\thechapter}{20pt}{\Huge\b‌​fseries}

\begin{document}
 \begin{tikzpicture}
   \draw[thick] \gear{18}{0.5}{0.4}{10}{2};
 \end{tikzpicture} 

\chapter{Whatever} 

\end{document} 

编辑 2:在@Qrrbrbirlbel 和@StefanKottwitz 的帮助下,我得到了以下信息:

\documentclass[12pt]{memoir}

\usepackage{tikz}
\usepackage{titlesec}

\newsavebox\gearbox
\newcommand{\gear}[5]{%
\begin{tikzpicture}
\draw[ultra thick]
\foreach \i in {1,...,#1} {%
  [rotate=(\i-1)*360/#1]  (0:#2)  arc (0:#4:#2) {[rounded corners=1.5pt]
             -- (#4+#5:#3)  arc (#4+#5:360/#1-#5:#3)} --  (360/#1:#2)
};\end{tikzpicture}}
\sbox\gearbox{\resizebox{!}{2em}{\gear{18}{2}{1.6}{10}{2}}}
\titleformat{\chapter}{\Huge\bfseries}{\usebox{\gearbox}\thechapter}{20pt}{\Huge\bfseries}

\begin{document} 

\chapter{Whatever} 

\end{document} 

但我希望装备看起来更像并在章节号后面加上齿轮。如何实现?

答案1

在使用盒子之前,你需要将装备存放在里面,例如

\newsavebox{\chaptergear}
\savebox{\chaptergear}{%
  \begin{tikzpicture}
    \draw[thick] \gear{18}{0.5}{0.4}{10}{2};
  \end{tikzpicture}}
\titleformat{\chapter}{\Huge\bfseries}{\usebox{\chaptergear}%
  \thechapter}{20pt}{\Huge\bfseries}

章节标题

答案2

我使用了几种材料:Stefan Kottwitz 的回答,以及 Alain Matthes 的精彩宏创建一个齿轮

经过一些微调后,得到如下效果:

\documentclass[12pt]{memoir}
\usepackage{tikz}
\usepackage{titlesec}

% #1 number of teeths
% #2 radius intern
% #3 radius extern
% #4 angle from start to end of the first arc
% #5 angle to decale the second arc from the first 

\newcommand{\gearmacro}[5]{%
\foreach \i in {1,...,#1} {%
  [rotate=(\i-1)*360/#1]  (0:#2)  arc (0:#4:#2) {[rounded corners=1.5pt]
             -- (#4+#5:#3)  arc (#4+#5:360/#1-#5:#3)} --  (360/#1:#2)
}}  

\newcommand{\chaptergear}{\begin{tikzpicture}
   \fill[gray] (0,0) circle (2cm);
   \draw[thick,rotate=12,fill=gray] \gearmacro{8}{2}{2.4}{20}{2};
   \draw[thick,fill=white] (0cm,0cm) circle(1.35cm);
 \end{tikzpicture}}

\newsavebox\gearbox
\sbox\gearbox{\resizebox{!}{5em}{\chaptergear}}
\titleformat{\chapter}{\Huge\bfseries}{\raisebox{-0.75cm}{\usebox{\gearbox}}\hspace*{-1.25cm}\thechapter\vspace{\stretch{-10}}}{45pt}{\Huge\bfseries}

\begin{document}
\chapter{Whatever2}
\end{document}

这让你

在此处输入图片描述

我必须承认,我对将章节编号放在齿轮中间的手动调整不太满意,但不幸的是我不知道如何解决这个问题。

答案3

这是一个快速的齿轮构造,只有一条路径,因此您可以正确填充它。我会尝试回到这里,用正确的key=value语法来制作它。现在它只是无聊的\def开始。但是如果你有不同的螺纹轮廓,那么这个想法基本上是相同的。

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\def\teethnumber{17}     %<--- How many teeth
\def\threadheight{1mm}   %<--- How high the thread
\def\outrad{5mm}
\draw[fill=gray,even odd rule] 
let 
\n{dpt} = {360/\teethnumber)}%deg per teeth %<--- Overkill! Can be defined outside
in
(0,0) circle (4mm)                          %<--- Shaft circle
({\n{dpt}*(0.5)}:\outrad) \foreach \x in {1,...,\teethnumber}{ %<--- Tooth covers half width
arc ({\n{dpt}*(\x-0.5)}:{\n{dpt}*(\x-0.25)}:\outrad)  %<-- Lower arc
--++(\x*\n{dpt}:\threadheight)                        %<-- Go up
arc ({\n{dpt}*(\x-0.25)}:{\n{dpt}*(\x+0.25)}:\outrad) %<-- Upper arc
--++(\x*\n{dpt}:-\threadheight)                       %<-- Go down
arc ({\n{dpt}*(\x+0.25)}:{\n{dpt}*(\x+0.5)}:\outrad)--%<-- Get to the next one for cont. path
({\n{dpt}*(\x+0.5)}:\outrad)
};
\end{tikzpicture}
\end{document}

从给定的代码开始的几个例子

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

最后一种方法是使轴圆大于外半径。这可能对行星齿轮等有益……

相关内容