Well, we can always appeal to tikz to make these graphic details.
Below you can see some lines with the tikz own endings.
And the picture above was generated from the following code:
\documentclass[a4paper, twocolumn]{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\newcommand{\myrule} [3] []{
\begin{center}
\begin{tikzpicture}
\draw[#2-#3, ultra thick, #1] (0,0) to (0.5\linewidth,0);
\end{tikzpicture}
\end{center}
}
\begin{document}
\myrule{}{}
\myrule[double]{}{}
\myrule{to}{to}
\myrule[double]{to}{to}
\myrule{to reversed}{to reversed}
\myrule[double]{to reversed}{to reversed}
\myrule{implies}{implies}
\myrule[double]{implies}{implies}
\myrule{latex}{latex}
\myrule{latex reversed}{latex reversed}
\myrule{latex'}{latex'}
\myrule{latex' reversed}{latex' reversed}
\myrule{stealth}{stealth}
\myrule{stealth reversed}{stealth reversed}
\myrule{stealth'}{stealth'}
\myrule{stealth' reversed}{stealth' reversed}
\myrule{triangle 90}{triangle 90}
\myrule{triangle 90 reversed}{triangle 90 reversed}
\myrule{triangle 60}{triangle 60}
\myrule{triangle 60 reversed}{triangle 60 reversed}
\myrule{triangle 45}{triangle 45}
\myrule{triangle 45 reversed}{triangle 45 reversed}
\myrule{open triangle 90}{open triangle 90}
\myrule{open triangle 90 reversed}{open triangle 90 reversed}
\myrule{open triangle 60}{open triangle 60}
\myrule{open triangle 60 reversed}{open triangle 60 reversed}
\myrule{open triangle 45}{open triangle 45}
\myrule{open triangle 45 reversed}{open triangle 45 reversed}
\myrule{angle 90}{angle 90}
\myrule{angle 90 reversed}{angle 90 reversed}
\myrule{angle 60}{angle 60}
\myrule{angle 60 reversed}{angle 60 reversed}
\myrule{angle 45}{angle 45}
\myrule{angle 45 reversed}{angle 45 reversed}
\myrule{hooks}{hooks}
\myrule{hooks reversed}{hooks reversed}
\myrule{(}{)}
\myrule{)}{(}
\myrule{|}{|}
\myrule{o}{o}
\myrule{*}{*}
\myrule{diamond}{diamond}
\myrule{open diamond}{open diamond}
\myrule{square}{square}
\myrule{open square}{open square}
\myrule{serif cm}{serif cm}
\myrule{left to}{left to}
\myrule{left to reversed}{left to reversed}
\myrule{right to}{right to}
\myrule{right to reversed}{right to reversed}
\myrule{left hook}{left hook}
\myrule{left hook reversed}{left hook reversed}
\myrule{right hook}{right hook}
\myrule{right hook reversed}{right hook reversed}
\myrule[line width = 2mm]{round cap}{round cap}
\myrule[line width = 2mm]{butt cap}{butt cap}
\myrule[line width = 2mm]{triangle 90 cap}{triangle 90 cap}
\myrule[line width = 2mm]{triangle 90 cap reversed}{triangle 90 cap reversed}
\myrule[line width = 2mm]{fast cap}{fast cap}
\myrule[line width = 2mm]{fast cap reversed}{fast cap reversed}
\end{document}
But you can also use more powerful features:
And to generate the image above:
\documentclass[a4paper, twocolumn]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{decorations.shapes}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{decorations.fractals}
\usetikzlibrary{decorations.footprints}
\tikzset {
, bedknobs one/.style = {
decorate
, fill = red!50
, decoration = {
shape backgrounds
, shape = #1
, shape size = 2mm
}
}
, bedknobs two/.style = {
decorate
, decoration = {
#1
}
, fill = blue!50
}
}
\newcommand{\bedknobsone}[1]{
\begin{center}
\tikz \draw [bedknobs one = {#1}] (0,0) to (0.5\linewidth, 0);
\end{center}
}
\newcommand{\bedknobstwo}[1]{
\begin{center}
\tikz \draw [bedknobs two = {#1}] (0,0) to (0.5\linewidth, 0);
\end{center}
}
\newcommand{\bedknobsthree}[1]{
\begin{center}
\tikz [
decoration = #1
] \draw decorate{ decorate{ decorate{ (0, 0) -- (0.5\linewidth, 0) }}};
\end{center}
}
\newcommand{\bedknobsfour}{
\begin{center}
\begin{tikzpicture} [thick]
\node[minimum size = 5mm] (first) {};
\node[minimum size = 5mm, anchor = west] (second) at (first.east) {};
\draw plot [smooth] coordinates {
(first.north) (first.west) (first.south)
(second.north) (second.east) (second.south)
};
\end{tikzpicture}
\end{center}
}
\newcommand{\bedknobsfive}{
\begin{center}
\begin{tikzpicture} [thick]
\node[minimum size = 5mm] (first) {};
\node[minimum size = 5mm, anchor = west] (second) at (first.east) {};
\node[minimum size = 5mm, anchor = west] (space) at (second.east) {};
\node[minimum size = 5mm, anchor = west] (third) at (space.east) {};
\node[minimum size = 5mm, anchor = west] (fourth) at (third.east) {};
\draw plot [smooth] coordinates {
(first.north) (first.west) (first.south)
(second.north) (second.east) (second.south)
};
\draw plot [smooth] coordinates {
(fourth.north) (fourth.east) (fourth.south)
(third.north) (third.west) (third.south)
};
\end{tikzpicture}
\end{center}
}
\begin{document}
\section {basic}
\bedknobstwo{crosses}
\bedknobstwo{triangles}
\section {shapes}
\bedknobsone{dart}
\bedknobsone{diamond}
\bedknobsone{isosceles triangle}
\bedknobsone{star}
\bedknobstwo{shape backgrounds, shape scaled, shape start size=2.5mm,shape end size=1mm}
\section {footprints}
\bedknobstwo{footprints}
\bedknobstwo{footprints, foot of = gnome}
\bedknobstwo{footprints, foot of = bird}
\bedknobstwo{footprints, foot of = felis silvestri}
\section {fractals}
\bedknobsthree {Koch curve type 1}
\bedknobsthree {Koch curve type 2}
\bedknobsthree {Koch snowflake}
\bedknobsthree {Cantor set}
\section {Others}
\bedknobsfour
\bedknobsfive
\end{document}