%EC%9D%84%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 신입이고 이것이 나의 첫 번째 게시물입니다. 사이트를 검색했는데 내 질문에 대한 답변을 찾을 수 없었습니다. 제가 찾지 못한 중복된 질문이 있으면 알려주시기 바랍니다.
클래스를 사용하는 템플릿이 있는데 memoir
가장 많이 사용되는 옵션은 a4paper
또는 letterpaper
문서를 보내는 사람에 따라 다릅니다.
a4paper
또는 에 대해 서로 다른 여백을 정의하는 터프티 스타일 파일이 있습니다 letterpaper
.
\ProvidesPackage{memtufte}
\DeclareOption{a4paper}{%
\settrims{0pt}{0pt}%
\settypeblocksize{640pt}{310pt}{*}%
\setlrmargins{63.754pt}{*}{*}%
\setmarginnotes{16pt}{144pt}{0.7\baselineskip}%
}
\DeclareOption{letterpaper}{%
\settrims{0pt}{0pt}%
\settypeblocksize{600pt}{320pt}{*}%
\setlrmargins{64.1475pt}{*}{*}%
\setmarginnotes{16pt}{150pt}{0.5\baselineskip}%
}
\ProcessOptions\relax
... ... (and some other settings that are common for a4paper and letterpaper.
파일 에 main.tex
다음과 같이 작성합니다.
\documentclass[letterpaper,11pt,article,twoside]{memoir}
\usepackage[letterpaper]{memtufte}
또는
\documentclass[a4paper,11pt,article,twoside]{memoir}
\usepackage[a4paper]{memtufte}
이것은 작동합니다. 하지만 동일하게 유지하려면 클래스와 패키지 옵션을 모두 변경해야 합니다.
\usepackage{memtufte}
그래서 첫 번째 질문은 메인 파일에서 간단히 사용할 수 있고 클래스 옵션에 따라 여백이 올바르게 설정되는 방식으로 패키지를 다시 작성할 수 있는 방법입니다 .두 번째 질문은 이것이 모든 클래스 옵션(A, B, C, ...)으로 일반화될 수 있는지 여부입니다. 예:
if class option is A, then do something, if class option is B and C, do something else, if class option is C, do another thing, ...
감사해요.
답변1
\ProcessOptions
또한 전역 옵션( 에 설정된 옵션 \documentclass
)도 읽습니다. 따라서,
\documentclass[a4paper]{memoir}
\usepackage{memtufte}
a4paper
또한 in 에 대한 옵션 처리를 트리거합니다 memtufte
. 이는 \typeout{}
옵션 코드에 호출을 추가하여 쉽게 확인할 수 있습니다 . 예:
\DeclareOption{a4paper}{%
...%
\typeout{memtufte:a4paper}%
}
그런 다음 콘솔과 .log
파일에는 다음 줄이 포함됩니다.
memtufte:a4paper
두 번째 질문
일반적으로 전역 옵션(에 지정된 옵션 \documentclass
)이 패키지에 전달됩니다. 따라서 패키지는 일반을 통해 이를 읽을 수 있습니다 \DeclareOption
.
\DeclareOption{A}{... do something ...}
\ProcessOptions\relax % or \ProcessOptions*