
Это немного странный вопрос, и я не ожидаю, что на него будет ответ. Но вы должны попытаться, верно?
Я пытаюсь одеть символ маленького человека. Я хочу надеть на него футболку - и желательно, чтобы можно было менять цвет этой футболки. Я использую символ
\Gentsroom
из пакета MarVoSym, который выглядит так:
Я хочу надеть на него желтую рубашку, чтобы он выглядел вот так:
Кто-нибудь может помочь? Спасибо.
решение1
10-пунктная версия
\documentclass{article}
\usepackage{stackengine,marvosym,xcolor,trimclip}
\begin{document}
\stackinset{c}{}{c}{0.9pt}{%
\color{yellow!80!orange}\clipbox{0pt 4.0pt 0pt 2.2pt}{\Gentsroom}}{%
\stackinset{c}{}{c}{}{%
\color{yellow!80!orange}\clipbox{1.1pt 2.2pt 1.1pt 2.2pt}{\Gentsroom}}{%
\Gentsroom}}
\end{document}
12-пунктная версия
Поскольку клипы выполняются в пунктах, разные размеры шрифта требуют разных \clipbox
значений.
\documentclass[12pt]{article}
\usepackage{stackengine,marvosym,xcolor,trimclip}
\begin{document}
\stackinset{c}{}{c}{1pt}{%
\color{yellow!80!orange}\clipbox{0pt 4.6pt 0pt 2.6pt}{\Gentsroom}}{%
\stackinset{c}{}{c}{}{%
\color{yellow!80!orange}\clipbox{1.3pt 2.6pt 1.3pt 2.6pt}{\Gentsroom}}{%
\Gentsroom}}
\end{document}
Конечно, я понимаю, к чему вы клоните...
Просто возьмите логотип вашей любимой команды в формате png и, вуаля!
\documentclass[12pt]{article}
\usepackage{stackengine,marvosym,xcolor,trimclip,graphicx}
\begin{document}
\stackinset{c}{}{c}{}{\includegraphics[width=2pt]{Ravens}}{%
\stackinset{c}{}{c}{1pt}{%
\color{purple!55!blue}\clipbox{0pt 4.6pt 0pt 2.6pt}{\Gentsroom}}{%
\stackinset{c}{}{c}{}{%
\color{purple!55!blue}\clipbox{1.3pt 2.6pt 1.3pt 2.6pt}{\Gentsroom}}{%
\Gentsroom}}}
\end{document}
Для автоматизации процесса, для цвета и масштабируемости, вот\Tshirt[<size>]{<color>}
\documentclass[12pt]{article}
\usepackage{stackengine,marvosym,xcolor,trimclip,scalerel}
\newcommand\Tshirt[2][8.8pt]{\savestack\theTshirt{%
\stackinset{c}{}{c}{1pt}{%
\color{#2}\clipbox{0pt 4.6pt 0pt 2.6pt}{\Gentsroom}}{%
\stackinset{c}{}{c}{}{%
\color{#2}\clipbox{1.3pt 2.6pt 1.3pt 2.6pt}{\Gentsroom}}{%
\Gentsroom}}}%
\scaleto{\theTshirt}{#1}}
\begin{document}
\Gentsroom \Tshirt{yellow!80!orange}%
\Tshirt[18pt]{red}\Tshirt[30pt]{purple!55!blue}
\end{document}
решение2
Вы можете использовать picture
режим. Он масштабируется вместе с размером шрифта, но вы также можете задать «абсолютную» высоту.
\documentclass{article}
\usepackage{pict2e,xcolor}
\usepackage{marvosym}% for comparison
\definecolor{yellowshirt}{RGB}{255,211,6}
\newcommand{\Person}[1][0.87\ht\strutbox]{%
\begingroup\setlength\unitlength{#1}%
\begin{picture}(0.6,1)
\put(0.3,0.85){\circle*{0.28}}
\polygon*(0.075,0.3)(0.15,0.3)(0.15,0.55)(0.075,0.55)% left arm
\polygon*(0.45,0.3)(0.525,0.3)(0.525,0.55)(0.45,0.55)% right arm
\polygon*(0.17,0)(0.29,0)(0.29,0.3)(0.17,0.3)% left leg
\polygon*(0.31,0)(0.43,0)(0.43,0.3)(0.31,0.3)% right leg
\color{yellowshirt}
\polygon*(0.17,0.32)(0.43,0.32)(0.43,0.7)(0.17,0.7)% torso
\polygon*(0.075,0.55)(0.15,0.55)(0.15,0.7)(0.075,0.7)% left arm
\polygon*(0.45,0.55)(0.525,0.55)(0.525,0.7)(0.45,0.7)% right arm
\end{picture}\endgroup
}
\begin{document}
\Gentsroom\ \Person {\Huge\Gentsroom\ \Person} \Person[2cm]
\end{document}
решение3
В следующем примере FontForge и TikZ используются для получения описания пути SVG для глифа Gentroom.
- Файл шрифта
TDS:fonts/type1/public/marvosym/marvosym.pfb
открывается в FontForge. - Символ Gentroom находится на позиции 120 и открыт.
Описание глифа экспортируется в формате SVG:
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > <svg viewBox="0 -200 1000 1000"> <g transform="matrix(1 0 0 -1 0 800)"> <path fill="currentColor" d="M220 728c53 0 101 -44 103 -99c0 -58 -34 -101 -87 -109h-32c-20 3 -37 11 -54 24l-19 25c-10 19 -14 33 -14 53c0 60 42 103 103 106zM49 504l52 -2v-294h-52v296zM117 504l206 -2v-278h-206v280zM338 504l52 -2v-294h-52v296zM117 208h94v-208h-94v208zM228 208h95v-208h-95v208z" /> </g> </svg>
Описание пути, значение атрибута
d
элементаpath
также может быть проанализировано библиотекой TikZsvg.path
. Язык довольно прост. За буквой оператора следуют аргументы. Здесь нам нужно:M
: абсолютный переходl
: относительная линия-доh
: горизонтальная относительная линия-кv
: вертикальная относительная линия-кz
: закрыть путь (cycle
в TikZ)
Путь SVG копируется и изменяется в TikZ.
Результат файла LaTeX с комментариями:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{svg.path}
\usepackage{xcolor}
\definecolor{GentRoomTShirtColor}{HTML}{FFD800}
\begin{document}
\begin{tikzpicture}[scale=.1]% Adjust the scale factor above to your needs.
\fill svg{%
% Head [original]
M220 728c53 0 101 -44 103 -99c0 -58 -34 -101 -87 -109h-32c-20 3 -37 %
11 -54 24l-19 25c-10 19 -14 33 -14 53c0 60 42 103 103 106z%
% Left arm [original]
% M49 504l52 -2v-294h-52v296z
% Black part (two thirds) of left arm [new]
M49 405h52v-196h-52z%
% Torso [original]
% M117 504l206 -2v-278h-206v280z
% Right arm, original
% M338 504l52 -2v-294h-52v296z
% Black part (two thirds) of right arm [new]
M338 405h52v-196h-52z%
% Left leg [original]
% M117 208h94v-208h-94v208z
% Left leg [optimized]
M117 208h94v-208h-94z%
% Right leg [original]
% M228 208h95v-208h-95v208z
% Right leg [optimized]
M228 208h95v-208h-95z%
};
\fill[GentRoomTShirtColor] svg {%
% Upper part (one third) of left arm [new]
M49 503h52v-98h-52z%
% Torso [optimized]
M117 503h206v-277h-206z% torso
% Upper part (one third) of right arm [new]
M338 503h52v-98h-52z%
% Add side-bearings (additional white space on the left and right)
% of the original glyph or comment it , if you do not need them.
M0 0M439 0%
};
\end{tikzpicture}
\end{document}
Замечания:
- Координаты такие же, как в FontForge.
- Описание глифа содержит странность (баг): верхние правые углы рук и туловища опущены на 2pt по сравнению с верхними левыми углами. Это исправлено в примере LaTeX для получения четких горизонтальных линий.
- Я опустил код для уменьшения результата до фактического размера глифа или чего-то подобного, поскольку не знаю назначения нового символа. (Уменьшение до размера глифа не имеет смысла, если символ нужен как большое изображение.)
- Оригинальные боковые опоры глифа добавлены, но при необходимости их можно легко снять, см. комментарии.
- Оператор close-path (
z
) подключается к начальной точке, поэтому нет необходимости явно переходить к начальной точке. Маркер[optimized]
означает, что последняя операция line-to к начальной точке перед этимz
удаляется.
решение4
Правила создания:
\documentclass{article}
\usepackage{wasysym,xcolor,graphicx}
\parindent0pt
\newcommand\Gent[1]{\resizebox{!}{#1em}{\parbox[b]{4em}{\makebox[3.2em]{\Huge$\CIRCLE$}\\
\rule[-.2em]{.5em}{3.2em}\,%
\rule{2em}{3em}\,\rule[-.2em]{.5em}{3.2em}\\[-2pt]
\rule{.5em}{0em}\,\rule{.8em}{3.2em}\,\,\rule{.8em}{3.2em}}}}
\newcommand\Tshirt[1]{\resizebox{!}{#1em}{\parbox[b]{4em}{\makebox[3.2em]{\color{orange}\Huge$\CIRCLE$}\\
\rlap{\color{yellow}\rule[-.2em]{.5em}{3.2em}}%
{\color{orange}\rule[-.2em]{.5em}{2.2em}}\,{\color{yellow}\rule{2em}{3em}}\,%
\rlap{\color{yellow}\rule[-.2em]{.5em}{3.2em}}%
{\color{orange}\rule[-.2em]{.5em}{2.2em}}\\[-2pt]
\rule{.5em}{0em}\,\rule{.8em}{3.2em}\,\,\rule{.8em}{3.2em}}}}
\begin{document}
\Gent{4} \Tshirt{4}
\Gent{3} \Tshirt{3}
\Gent{2} \Tshirt{2}
\Gent{1} \Tshirt{1}
\end{document}