비머, 필렉스, \hfill

비머, 필렉스, \hfill

저는 언어적 예를 위해 패키지를 사용하고 philex있으며 줄 끝(오른쪽 가운데)에 텍스트 요소를 넣으려고 합니다. 명령 을 사용하려고 했지만 \hfillMWE에서 볼 수 있듯이 일관된 정렬을 제공하지 않습니다.

\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

philexegreg가 답변에서 제시한 이유 때문에 피해야 합니다 . 언어적 예를 조판하기 위해 가장 일반적으로 사용되는 패키지는 다음과 같습니다.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마찬가지로 결함이 있습니다.

관련 정보