
영어로 오류를 표시하고 포르투갈어로 잘 컴파일되는 이 간단한 파일은 다음과 같습니다.
\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)가 \ro
TeX 프리미티브가 아니라 매크로라는 것을 의미합니다. (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}
하면 어떤 결과가 나올지 추측해 보겠습니다 .)babel
english
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가 유사합니다.애드 혹다양한 언어에 대한 정의가 있으며 사용자 또는 패키지 명령과 충돌할 수 있기 때문에 정말 성가신 일입니다.
영어 문서에 \ord
or \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}}