Um zwischen Objektsprache und Metasprache zu unterscheiden, möchte ich einen möglichst deutlichen Unterschied zwischen den im Titel genannten Zeichen, wie sie in der Objektsprache und wie sie in der formalen Metasprache verwendet werden, erreichen. Wie erreiche ich dies am besten?
Ich bin mit dem geringen Unterschied zwischen $\boldsymbol{{}()\vee} und ${}()\vee$ nicht zufrieden.
Vielleicht gibt es einige verwandte Symbole inhttp://linorg.usp.br/CTAN/info/symbols/comprehensive/symbols-a4.pdfdie ich verwenden könnte?
Antwort1
Ich führe ein \fat
, dass das Argument mit einem Multi-Offset-Overlay fett hervorgehoben wird. Obwohl es im Textmodus oder im Mathematikmodus aufgerufen werden kann, wird sein Argument im Mathematikmodus verarbeitet (sofern es nicht durch abgegrenzt wird, $
wodurch es im Textmodus verarbeitet wird). Wichtig ist, dass der aktuelle Mathematikstil beibehalten wird. Für Dinge wie \vee
ist es einfacher, \fvee
in Bezug auf \fat
und zu definieren \vee
.
\documentclass{article}
\usepackage{scalerel}
\newcommand\fat[1]{\ThisStyle{\ooalign{%
\kern.46pt$\SavedStyle#1$\cr\kern.33pt$\SavedStyle#1$\cr%
\kern.2pt$\SavedStyle#1$\cr$\SavedStyle#1$}}}
\def\fvee{\mathbin{\fat{\vee}}}
\begin{document}
$\{(xyz\vee abc)\} \scriptscriptstyle
\{(xyz\vee abc)\}$
$\fat\{\fat(xyz\fvee abc\fat)\fat\} \scriptscriptstyle
\fat\{\fat(xyz\fvee abc\fat)\fat\}$
\fat aa\fat{$a$}
\end{document}
Wenn Sie den Effekt wirklich verstärken möchten, können Sie dem Ergebnis eine kleine horizontale Streckung hinzufügen (in diesem Fall 20 %):
\documentclass{article}
\usepackage{scalerel}
\newcommand\fat[1]{\ThisStyle{\hstretch{1.2}{\ooalign{%
\kern.46pt$\SavedStyle#1$\cr\kern.33pt$\SavedStyle#1$\cr%
\kern.2pt$\SavedStyle#1$\cr$\SavedStyle#1$}}}}
\def\fvee{\mathbin{\fat{\vee}}}
\begin{document}
$\{(xyz\vee abc)\} \scriptscriptstyle
\{(xyz\vee abc)\}$
$\fat\{\fat(xyz\fvee abc\fat)\fat\} \scriptscriptstyle
\fat\{\fat(xyz\fvee abc\fat)\fat\}$
\fat aa\fat{$a$}
\end{document}
Antwort2
Eine paketbasierte Lösung pdfrender
um die Symbole zusätzlich mit einer Strichstärke zu versehen.
\documentclass{article}
\usepackage{amsmath}% for environment "gather*"
\usepackage{pdfrender}
\newcommand*{\fatten}[1][.4pt]{%
\textpdfrender{
TextRenderingMode=FillStroke,
LineWidth={\dimexpr(#1)\relax},
}%
}
\begin{document}
\begin{gather*}
(a \vee b) = \{a \vee b\}
\\
\fatten{(} a \fatten{\vee} b \fatten{)} =
\fatten{\{} a \fatten{\vee} b \fatten{\}}
\\
\fatten[1pt]{(} a \fatten[1pt]{\vee} b \fatten[1pt]{)} =
\fatten[1pt]{\{} a \fatten[1pt]{\vee} b \fatten[1pt]{\}}
\end{gather*}
\end{document}
Vorsicht:
Die erhöhte Strichstärkenichtzur Breite des Symbols beitragen. Ein Makro kann dies kompensieren:
\newcommand*{\fatvee}[1][1pt]{% \mathbin{% \kern.5\dimexpr(#1)\relax \fatten[{#1}]{\vee}% \kern.5\dimexpr(#1)\relax }% }
Vollständiges Beispiel mit Breitenkompensation:
\documentclass{article}
\usepackage{amsmath}% for environment "gather*"
\usepackage{pdfrender}
\newcommand*{\fatten}[1][.4pt]{%
\textpdfrender{
TextRenderingMode=FillStroke,
LineWidth={\dimexpr(#1)\relax},
}%
}
\newcommand*{\fatdef}[4][1pt]{%
% #1: optional stroke width
% #2: new macro for fattened symbol
% #3: math atom type (\mathbin, \mathrel, ...)
% #4: symbol
\newcommand*{#2}{%
#3{%
\kern.5\dimexpr(#1)\relax
\fatten[{#1}]{#4}%
\kern.5\dimexpr(#1)\relax
}%
}%
}
\fatdef\fatvee\mathbin\vee
\fatdef\fatlparen\mathopen(
\fatdef\fatrparen\mathclose)
\fatdef\fatlbrace\mathopen\{
\fatdef\fatrbrace\mathclose\}
\begin{document}
\begin{gather*}
(a \vee b) = \{a \vee b\}
\\
\fatlparen a \fatvee b \fatrparen =
\fatlbrace a \fatvee b \fatrbrace
\end{gather*}
\end{document}
\left
und \right
kann durch ein Makro unterstützt werden, das den Rendering-Modus für die Formel innerhalb der Zäune zurücksetzt:
\documentclass{article}
\usepackage{amsmath}% for environment "gather*"
\usepackage{pdfrender}
\newcommand*{\fatten}[1][.4pt]{%
\textpdfrender{
TextRenderingMode=FillStroke,
LineWidth={\dimexpr(#1)\relax},
}%
}
\newcommand*{\fatdef}[4][1pt]{%
% #1: optional stroke width
% #2: new macro for fattened symbol
% #3: math atom type (\mathbin, \mathrel, ...)
% #4: symbol
\newcommand*{#2}{%
#3{%
\kern.5\dimexpr(#1)\relax
\fatten[{#1}]{#4}%
\kern.5\dimexpr(#1)\relax
}%
}%
}
\newcommand*{\fatleftrightdef}[4][1pt]{%
% #1: optional stroke width
% #2: new macro name
% #3: left fence
% #4: right fence
\newcommand*{#2}[1]{%
\kern.5\dimexpr(#1)\relax
\fatten[{#1}]{%
\left#3%
\kern.5\dimexpr(#1)\relax
\textpdfrender{TextRenderingMode=Fill}{##1}%
\kern.5\dimexpr(#1)\relax
\right#4%
}%
\kern.5\dimexpr(#1)\relax
}%
}
\fatdef\fatvee\mathbin\vee
\fatleftrightdef\fatleftrightparens()
\fatleftrightdef\fatleftrightbraces\{\}
\begin{document}
\begin{gather*}
\left( \frac{a}{a} \vee \frac{b}{b} \right) =
\left\{ \frac{a}{a} \vee \frac{b}{b} \right\}
\\
\fatleftrightparens{ \frac{a}{a} \fatvee \frac{b}{b} } =
\fatleftrightbraces{ \frac{a}{a} \fatvee \frac{b}{b} }
\end{gather*}
\end{document}