바벨 - 언어의 차이

바벨 - 언어의 차이

영어로 오류를 표시하고 포르투갈어로 잘 컴파일되는 이 간단한 파일은 다음과 같습니다.

\documentclass{report}

\usepackage[english]{babel}
%\usepackage[portuges]{babel}

\begin{document}
\ro
\end{document}

\ro한 언어로 정의되고 다른 언어로는 정의되지 않습니까? \ro포르투갈어로 무엇이 정의되어 있는지 어떻게 알 수 있나요 ? 이런 식으로 정의된 다른 명령은 무엇입니까? \ro바벨 매뉴얼에는 언급이 없습니다 .

답변1

\ro포르투갈어로 무엇이 정의되어 있는지 어떻게 알 수 있나요 ?

명령이 정의된 방법을 알아 보려면 를 사용하십시오 \show. 실행 \show\ro하고 로그 파일을 살펴보면 다음을 찾을 수 있습니다.

> \ro=macro:
->$^{\rm o}$.
l.8 \show\ro

이것은 (a)가 \roTeX 프리미티브가 아니라 매크로라는 것을 의미합니다. (b) 그 정의는 다음과 같습니다 \def\ro{$^{\rm o}$}. (c) 수학 모드가 아닌 텍스트 모드에서 사용되어야 합니다.

나는 포르투갈어 전문가는 아니지만 "첫 번째, 두 번째, 세 번째"는 "primeiro, segundo, terceiro"와 같은 긴 형식으로 작성되고 LaTeX/babel 입력 표기법을 사용하여 1\ro, 2\ro, 3\ro속기처럼 작성된다고 생각합니다. 위에 표시된 정의를 고려하여 의 출력이 어떻게 보이는지 \ro추측해 보겠습니다 .1\ro, 2\ro, 3\ro

그렇다면 분명히 \ro기수를 서수로 "변환"(인쇄상의 의미에서!)하는 데 사용된다는 의미입니다. while은 \ro명시적인 인수를 취하지 않으며 단독으로 사용되는 것이 아니라 숫자와 함께 사용된다는 점에 유의하세요 .

덧붙여서, 포르투갈어는 남성형 서수와 여성형 서수를 모두 알고 있습니다. "primeira, segunda, terceira, quarta"를 축약된 형식으로 생성하려면 1\ra, 2\ra, 3\ra, 4\ra. 예를 들어, "a quarta vez"("네 번째")는 로 축약될 수 있습니다 a 4\ra~vez.

\ro한 언어로 정의되고 다른 언어로는 정의되지 않습니까?

음, 인쇄상의 요구 사항이 언어마다 다르기 때문에?

확실히, 영어 조판에서는 the \ro또는 \ra매크로가 필요하지 않습니다. "첫 번째, 두 번째, 세 번째"는기필코 아니다1\textsuperscript{o}, 2\textsuperscript{o}, 3\textsuperscript{o}영어 문서 와 마찬가지로 약식으로 작성됩니다 . 더욱이 영어에는 남성 서수와 여성 서수(중립은 고사하고!)를 구분하지 않습니다.

서수의 조판을 단순화하고 표준화하는 여러 LaTeX 패키지가 있습니다. 그러한 패키지 중 하나는니콜라 탤벗의 fmtcount는 매크로를 제공 \ordinalnum하고 다양한 언어별 적응 기능을 제공합니다. (여담: fmtcount패키지는 매크로 외에도 많은 다른 기능을 제공합니다 ordinalnum...) 물론입니다.

\documentclass[portuguese]{report}
\usepackage{babel,fmtcount}
\begin{document}
1\ro, \ordinalnum{1}, 2\ra, \ordinalnum{2}[f]
\end{document}

두 번 실행하면 숫자 "1" 뒤에 위 첨자 수준 스크립트 크기 문자 "o"가 나오고, 숫자 "2" 뒤에 위 첨자 수준 스크립트 크기 문자 "a"가 오는 두 인스턴스가 생성됩니다. ( 옵션을 로드 \ordinalnum{2}하면 어떤 결과가 나올지 추측해 보겠습니다 .)babelenglish

babel패키지가 오랫동안 존재해왔기 때문에 의 babel언어별 조판 기능 중 상당수가 와 같은 패키지가 출현하기 오래 전에 만들어졌다는 점을 상기하는 것이 유용합니다 fmtcount. 확실히, 현재 발견되는 언어별 이질성은 babel오늘날 패키지가 처음부터 하향식 방식으로 작성된 경우보다 훨씬 더 큽니다. (여담: portuges의 모듈이 babel오늘 작성되었다면 아마도 \def\ro{$^{\rm o}$}과 를 각각 과 \def\ra{$^{\rm a}$}로 대체할 것입니다 . 그러나 이는 다른 문제입니다.)\def\ro{\textsuperscript{o}}\def\ra{\textsuperscript{a}}

답변2

에 대한 여러 언어 정의 파일이 babel제대로 문서화되어 있지 않습니다.

만약 당신이texdoc babel-portuges(터미널에서 또는 링크를 클릭하면) 맨 마지막에 다음과 같은 내용이 표시됩니다.

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

LDF 파일이 최근에 수정되었다고 주장됨에도 불구하고. 나는 이러한 정의가 오래 전, 역사의 시작 부분에 추가되었다고 생각합니다 babel. 여러 LDF가 유사합니다.애드 혹다양한 언어에 대한 정의가 있으며 사용자 또는 패키지 명령과 충돌할 수 있기 때문에 정말 성가신 일입니다.

영어 문서에 \ordor \ro(예를 들어 전자는 수학 연산자에 사용될 수 있음)이라는 명령을 정의한다고 가정해 보겠습니다. 명령이 잘 작동할 것입니다. 그러나 을 추가하면 \usepackage[portuges]{babel}컴파일이 중지됩니다.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[portuges]{babel}
\usepackage{amsmath}

\DeclareMathOperator{\ord}{ord}

%[...]

그만 둘 것이다

! LaTeX Error: Command \ord already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.6 \DeclareMathOperator{\ord}{ord}

해결 방법이 있나요? 에서 이러한 정의를 제거하면 , 또는 를 사용하여 포르투갈어로 된 portuges.ldf기존 문서가 손상됩니다 .\ord\orda\ro\ra

이 아니라면당신의문서에서 문제가 되는 명령이 무엇을 의미하는지 특정 문서에서 찾아보고 필요한지 여부를 결정할 수 있습니다. 예를 들어 를 사용하면 \ord다음과 같은 해결 방법을 추가할 수 있습니다.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[portuges]{babel}
\usepackage{amsmath}

% fix an incompatibility
\let\babelord\ord
\DeclareRobustCommand{\ord}{%
  \ifmmode\expandafter\ordop\else\expandafter\babelord\fi
}
\DeclareMathOperator{\ordop}{ord}

%[...]

원본은 \ord텍스트 모드에만 속하기 때문입니다.

답변3

babel일반적으로 정의 파일 의 레거시 명령을 사용하지 않는 것이 좋습니다 .

그만큼이에 대한 표준 명령\textordmasculine은 및 입니다 \textordfeminine. 이는 모든 언어로 작동하며 babel.

평소와 같은 방식으로 편집기에 ª 및 º 문자를 입력할 수도 있습니다. 최신 버전의 LaTeX에서 작동합니다.

이 명령은 모두 텍스트 모드용입니다. 어떤 이유로 수학 모드에서 해당 단어를 사용하려면 다음과 같은 명령으로 단어를 래핑해야 합니다 \textnormal{1º}. 그러면 텍스트 모드로 다시 전환됩니다.

최신 버전의 PDFTeX에서는 이러한 모든 명령이 기본적으로 작동합니다. 이전 설치에서는 프리앰블에 다음 줄을 추가해야 할 수도 있습니다.

\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}

LuaLaTeX 또는 XeLaTeX에서는 대신 다음을 사용하여 최신 글꼴을 활성화하려고 합니다.

\usepackage{fontspec}

. \setmainfont​하지만 많은 글꼴 패키지는 인코딩을 올바르게 설정합니다.

일부 글꼴에는 이러한 기호 아래에 막대가 있고 다른 글꼴에는 없으므로 선호하는 글꼴을 선택하세요. 밑줄이 없는 버전과 밑줄이 있는 글꼴을 원한다면 재정의할 수 있습니다.

\renewcommand\textordmasculine{\textsuperscript{o}}
\renewcommand\textordfeminine{\textsuperscript{a}}

관련 정보