![Как увеличить (,), {,} и $\vee$ в математическом режиме?](https://rvso.com/image/305897/%D0%9A%D0%B0%D0%BA%20%D1%83%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D1%82%D1%8C%20(%2C)%2C%20%7B%2C%7D%20%D0%B8%20%24%5Cvee%24%20%D0%B2%20%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5%3F.png)
Чтобы различать объектный язык и метаязык, я хочу, чтобы было достаточно заметное различие между знаками, упомянутыми в названии, как они используются в объектном языке, и как они используются в формальном метаязыке. Как мне лучше всего этого добиться?
Меня не устраивает небольшая разница между $\boldsymbol{{}()\vee} и ${}()\vee$.
Возможно, есть какие-то связанные символы вhttp://linorg.usp.br/CTAN/info/symbols/comprehensive/symbols-a4.pdfкоторые я мог бы использовать?
решение1
Я представляю \fat
, что усиливает аргумент с помощью multi-offset-overlay. Хотя его можно вызвать в текстовом или математическом режиме, его аргумент обрабатывается в математическом режиме (если только не указано, $
что будет обрабатывать его в текстовом режиме). Важно, что текущий математический стиль сохраняется. Для таких вещей, как \vee
, проще определить \fvee
в терминах \fat
и \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}
Если вы действительно хотите усилить эффект, вы можете добавить небольшое горизонтальное растяжение к результату (в данном случае 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}
решение2
Решение на основе пакета pdfrender
для дополнительной обводки символов линией определенной толщины.
\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}
Осторожность:
Увеличенная ширина штриха делаетнетвносят вклад в ширину символа. Макрос может это компенсировать:
\newcommand*{\fatvee}[1][1pt]{% \mathbin{% \kern.5\dimexpr(#1)\relax \fatten[{#1}]{\vee}% \kern.5\dimexpr(#1)\relax }% }
Полный пример с компенсацией ширины:
\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
и \right
может поддерживаться макросом, который сбрасывает режим рендеринга для формулы внутри ограждений:
\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}