저는 언어적 예를 위해 패키지를 사용하고 philex
있으며 줄 끝(오른쪽 가운데)에 텍스트 요소를 넣으려고 합니다. 명령 을 사용하려고 했지만 \hfill
MWE에서 볼 수 있듯이 일관된 정렬을 제공하지 않습니다.
\documentclass[12pt]{beamer}
\usepackage[francais]{babel}
\usepackage{philex}
\begin{document}
\begin{frame}{The syntactic ambiguity}
\lb{}{
\lba{}{Fred eats an apple. \hfill (a)}
\lbz{}{Fred eats an apple. \hfill (a)}
}
\end{frame}
\end{document}
누군가 이 이상한 행동을 해결하도록 도와줄 수 있나요?
답변1
philex
egreg가 답변에서 제시한 이유 때문에 피해야 합니다 . 언어적 예를 조판하기 위해 가장 일반적으로 사용되는 패키지는 다음과 같습니다.gb4e
,expex
, 그리고linguex
(에 의해 로드됨 philex
). 보다Alan Munn의 이러한 패키지에 대한 탁월한 비교상세 사항은. philex
에 추가되는 많은 기능 linguex
(상호 참조, 반복 예제, 레이블 사용자 정의 등)을 에서 사용할 수 있습니다 expex
.
이러한 패키지를 모두 사용하면 오른쪽 정렬 주석을 사용할 수 있습니다. 다음에 대한 답변 보기언어 정보로 언어적 예에 라벨링각 패키지에서 이 작업을 수행하는 방법을 보여주는 코드입니다. expex
오른쪽 정렬 주석에 대한 기본 명령을 제공하는 유일한 명령입니다: \rightcomment
.
답변2
그 이유는 philex
패키지가 끔찍한 방식으로 작성되었으며 정의의 줄 끝을 보호하지 않기 때문입니다. 당신이 보는 공간은 주로 이러한 보호되지 않은 공간으로 인해 발생합니다.
보다\newcommand 또는 이와 유사한 줄 끝에 퍼센트 문자를 추가하는 것이 언제 해로울 수 있습니까?자세한 내용은.
수정 사항을 제안하기에는 보호되지 않은 끝 부분이 너무 많습니다. 매크로 정의가 매우 크고 모듈성을 사용하지 않는다는 문제도 있습니다.
와일드 해킹을 사용하여 문제를 "수정"할 수 있습니다. 그러나 정의의 특정 지점에서 공간이 실제로 필요한 경우 예상치 못한 결과가 발생할 수 있습니다.
\documentclass{article}
\usepackage{showframe}
\endlinechar=-1
\usepackage{philex}
\endlinechar=13
\begin{document}
\lb{y}{%
\lba{y1}{Fred eats an apple. \hfill (a)}%
\lbz{y2}{Fred eats an apple. \hfill (a)}%
}
\end{document}
입력에서도 줄 끝을 보호해야 합니다. 패키지 showframe
는 여백 정렬을 보여주기 위한 것입니다.
실제 해결 방법은 패키지를 사용하지 않고 관리자에게 잘못된 코드를 수정하도록 요청하는 것입니다.
\lb
예를 보여주기 위해 다음은 (편의상 줄 번호를 추가했습니다) 의 정의입니다.
95 \newcommand{\lb}[3][n]{
96 \ifdim\lastskip=\Extopsep\vspace\Exredux\else \fi
97 \immediate\write\@auxout{\unexpanded{\expandafter\gdef\csname#2r\endcsname{#3}\expandafter\gdef\csname#2\endcsname{\ref{#2}}
98 \expandafter\gdef\csname#2p\endcsname{\MakeLowercase#3}}}
99 \expandafter\providecommand\expandafter{\csname#2r\endcsname}{#3}
100 \expandafter\providecommand\expandafter{\csname#2\endcsname}{\ref{#2}}\expandafter\providecommand\expandafter{\csname#2p\endcsname}{\MakeLowercase#3}
101 \ifhyperref%
102 \renewcommand{\theFnExNo}{\roman{FnExNo}}
103 \ex. \label{#2} \if#1c \setlength{\abovedisplayskip}{1ex}
104 \setlength{\belowdisplayskip}{2ex}%
105 \parbox{\centro}{\centering \hypertarget{#2}{#3}\philpunct}\else \hypertarget{#2}{#3}\philpunct\fi\par
106 \else
107 \ex. \label{#2} \if#1c \setlength{\abovedisplayskip}{1ex}\setlength{\belowdisplayskip}{2ex}%
108 \parbox{\centro}{\centering #3\philpunct}\else #3\philpunct\fi\par%
109 \fi}
%
95, 97, 98, 99, 100, 102, 103행 끝에 누락된 항목이 있습니다. %
101행과 108행의 끝 부분은 중복됩니다(행은 제어 단어로 끝납니다). 올바르게 배치된 %
문자는 104행과 107행 끝에 있습니다.
의 정의에도 \lba
마찬가지로 결함이 있습니다.