我想知道有什么好方法可以这在 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\bfseries}
\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}
从给定的代码开始的几个例子
最后一种方法是使轴圆大于外半径。这可能对行星齿轮等有益……