MnSymbol과 함께 기본 \근사 기호 사용

MnSymbol과 함께 기본 \근사 기호 사용

나는 MnSymbol(다양한 종류의 아래쪽 화살표를 얻기 위해)을 사용하고 싶지만 \about 기호가 마음에 들지 않습니다. 대신 기본을 사용하고 싶습니다. savesym(아래 참조)을 사용해 보았으나 여전히 mnsymbol 버전이 출력됩니다. 어떤 제안이 있으십니까?

\documentclass{article}
\usepackage[english]{babel}

\usepackage{savesym}
\savesymbol{approx}

\usepackage{MnSymbol}

\restoresymbol{approx}{amssymb}

\begin{document}

$\approx$

\end{document}

편집 - 추가 질문

@Steven B. Segletes의 답변은 내가 요청한 문제에 완벽하게 작동합니다. 그러나 MnSymbol이 변경되는 것을 방지하고 싶은 다른 기호가 많이 있다는 것을 발견했습니다. 그렇다면 다른 방향에서 오는 해결책이 있을지 궁금합니다. 추가하려는 특정 기호를 제외하고 MnSymbol이 새로운 정의를 도입하는 것을 방지할 수 있습니까? (내가 특별히 원하는 것은 \ndownarrow, \nasheddownarrow 및 \dasheddownarrow입니다.)

...이제 @Steven B. Segletes가 이에 대해 이미 답변한 것을 확인했습니다(MnSymbols를 사용하는 표준 AMS-Sum 연산자?). 하지만 아래 댓글에서 말했듯이 저는 완전 일반인이고 글꼴이 바뀌는 것을 보면 겁이 납니다. 따라서 누군가가 다른 종류의 솔루션을 가지고 있다면 도움이 될 것입니다.

답변1

개정(GuM의 제안에 따라)

cmsy나보다 LaTeX 글꼴 사용법에 대해 더 잘 알고 있는 GuM은 이미 LaTeX( ) 에 알려진 인코딩을 연결하여 내 대답을 엄청나게 향상시켜 OMS새로운 글꼴 계열과 모양을 선언할 필요가 없도록 합니다. GuM은 또한 과감한 지원을 위해 올바른 주문을 외칩니다.

\documentclass{article}
%\usepackage[english]{babel}
\usepackage{MnSymbol,bm}
\DeclareSymbolFont{Xsymbols}{OMS}{cmsy}{m}{n}
\SetSymbolFont{Xsymbols}{bold}{OMS}{cmsy}{b}{n}
\DeclareMathSymbol{\Xapprox}{\mathrel}{Xsymbols}{25}

\begin{document}
$a\Xapprox b \bm{\Xapprox} c$

$a \approx b \bm{\approx} c$
\end{document}

여기에 이미지 설명을 입력하세요

원래 답변

여기서는 CM 기호 글꼴( cmsy, The TeXbook, p. 431 참조)을 \DeclareFontFamily. 그런 다음 를 사용하여 \DeclareFontShape원하는 포인트 크기에 따라 사용할 문자 크기를 지정합니다(예: 12포인트보다 큰 것은 cmsy12문자의 크기가 조정된 버전입니다). 그런 다음 글꼴 모음을 Xcmsy사용하는 새 기호 글꼴을 선언합니다 cmsy. 마지막으로 기호 글꼴 \DeclareMathSymbol에서 올바른 글리프를 추출하고 Xcmsy이를 이라고 부릅니다 \Xapprox. 유형 으로 사용되는지 확인 하고 기호 에 해당하는 해당 기호 글꼴의 슬롯 ( 8진수, 16진수) \mathrel을 사용합니다 .25'031"19\approx

\documentclass{article}
%\usepackage[english]{babel}
\usepackage{MnSymbol}
\DeclareFontFamily{U} {cmsy}{}

\DeclareFontShape{U}{cmsy}{m}{n}{
  <-6> cmsy5
  <6-7> cmsy6
  <7-8> cmsy7
  <8-9> cmsy8
  <9-10> cmsy9
  <10-12> cmsy10
  <12-> cmsy12}{}

\DeclareSymbolFont{Xcmsy} {U} {cmsy}{m}{n}

\DeclareMathSymbol{\Xapprox}{\mathrel}{Xcmsy}{25}
\begin{document}
$a\Xapprox b$

$a \approx b$
\end{document}

여기에 이미지 설명을 입력하세요

답변2

\approx으로 저장할 방법이 없습니다 savesym.기호 없음can 으로 정의됩니다 \DeclareMathSymbol.

패키지 savesym는 할 수 있습니다오직다음으로 정의된 명령으로 작업합니다 \newcommand(명령에 선택적 인수가 없는 경우). \DeclareRobustCommand문서에 설명된 이유로 명령이 정의된 경우에는 수행되지 않습니다 letltxmacro(또한 참조).https://tex.stackexchange.com/a/47372/4427).

무슨 일이 일어나는지 봅시다. 올바른 구문을 사용하면

\usepackage{savesym}

\show\approx

\savesymbol{approx}
\usepackage{MnSymbol}
\restoresymbol{mn}{approx}

\show\approx
\show\mnapprox

(이 \show줄은 디버깅을 위한 것입니다.) 터미널에 다음과 같은 내용이 표시됩니다.

> \approx=\mathchar"3219.

> \approx=\mathchar"3219.

> \mnapprox=\mathchar"3704.

대신 mn에 더 좋아하는 문자열을 사용할 수도 있습니다( savesym물론 이 문자열이 아닌 와 함께 작동하는 명령의 경우).

이는 수학 그룹의 글꼴인 슬롯에 \approx있는 관계 기호( )를 의미합니다 .32"19

그러나 문서가 시작되면 에 해당하는 수학 그룹의 글꼴에 MnSymbol할당됩니다 . 글꼴 테이블의 관련 부분은 다음과 같습니다.\U/MnSymbolF/m/n/102MnSymbolF10

여기에 이미지 설명을 입력하세요

실제로 문서가 인쇄됩니다

여기에 이미지 설명을 입력하세요

이것은 상징과 별로 다르지 않습니다 approx. 실제로 MnSymbol.sty우리는

\DeclareSymbolFont{symbols}{U}{MnSymbolF}{m}{n}

이는 수학 그룹 2에 해당하는 글꼴의 표준 선언을 재정의합니다. 수학 그룹 0, 수학 그룹 1, 수학 그룹 2 및 수학 그룹 3에 symbols대한 할당은 필수입니다. 나중에 1446행(글꼴의 기호를 정의하기 위해 카운터가 0으로 다시 초기화됨) 이후의 25번째 행(10진수 25는 16진수)에 다음과 같은 내용이 있습니다.operatorsletterssymbolslargesymbols19symbols

\Decl@Mn@Char\dbigdoublecurlywedge{symbols}{\mathop}

대신에 "예기치 않은" 기호가 표시됨을 확인합니다 \approx. MnSymbol매우 모호한 코드를 사용한다고 해야 할까요 . 실제로 의 값에서 알 수 있듯이 의 \mnapprox"근사값" 기호는 MnSymbol수학 그룹 7, 슬롯의 글꼴에서 가져온 것입니다 "04.

갈 수 있는 유일한 방법은 \DeclareSymbolFontSteven의 훌륭한 답변에 설명된 전략을 사용하는 것입니다.

답변3

편집하다:

나는 savesymbol 및 Restore Symbol 명령을 읽었습니다.

"대략"을 저장하면 "origabout이 생성됩니다"

다음 명령으로 "대략"을 복원하는 경우:

\restore{last}{approx}

그런 다음 "about"은 저장된 "origabout"과 다시 같아야 하며 "lastabout"은 복원하기 전 app의 마지막 값이 됩니다.

따라서 다음 코드가 있다면:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{savesym}
\savesymbol{approx}


\usepackage{MnSymbol}

\restoresymbol{UnwantedChanged}{approx}


\begin{document}

$\approx$


$\origapprox$


$\UnwantedChangedapprox$
\end{document}

우리는 MnSymbol의 기호가 있는 근사치, MnSymbol을 로드하기 전에 기호가 있는 원본 근사치 및 MnSymbol이 로드된 UnwantedChangedabout을 기대합니다.

그러나 위의 코드는 마지막 행에만 실제 대략적인 기호를 제공합니다.

인쇄의 마지막 줄과 복원 명령을 제거함으로써 savesymbol 명령이 이미 기호를 복원했으며 이전 근사치와 마지막 대략의 원본으로 인쇄하고 있음을 확인했습니다.

이는 문제를 해결하려면 복원 명령만 제거해야 함을 의미합니다... 이유는 모르겠습니다... savesym의 코드가 변경되어 새 기호를 로드한 후 자동으로 복원되거나 MnSymbol이 이 작업을 수행할 수 있습니다. 장난

이전 답변: (@StevenB.Segletes의 첫 번째 공정한 의견을 이해하기 위해)

반대 주장을 사용하여 명령을 작성했습니다. 노력하다:

\restoresymbol{approx}{amssymb}

관련 정보